構建私有CA
我們采用openssl這個軟件來實現
所有首先我們來看下該軟件的配置文件
實現環境 centos 7.2
[root@redhat7 ~]# rpm -qc openssl //可以看到該命令沒有任何輸出,我們可以思考該軟件包還存在其他的支包 [root@redhat7 ~]# rpm -qa | grep "openssl" //果然我們可以看到存在 libs 支包 openssl-libs-1.0.1e-42.el7.9.x86_64 openssl-1.0.1e-42.el7.9.x86_64 [root@redhat7 ~]# rpm -qc openssl-libs /etc/pki/tls/openssl.cnf //終于找到配置文件了
查看該配置文件
[root@redhat7 ~]# cat /etc/pki/tls/openssl.cnf
//我們主要關注 [ ca ] 段落
(1)自建CA;需要私鑰 //私鑰必須在特定的目錄下,且必須命名為cakey.pem 配置文件定義的
[root@redhat7 ~]# (umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) (在子shell中執行該命令 umask 077不影響當前shell的umask) Generating RSA private key, 2048 bit long modulus ....................+++ ..................+++ e is 65537 (0x10001) [root@redhat7 ~]# ll /etc/pki/CA/private/cakey.pem //生成的私鑰文件 -rw-------. 1 root root 1675 Sep 11 16:57 /etc/pki/CA/private/cakey.pem
(2)生成自簽證書 //特定目錄下的特定文件名 配置文件已經定義的 [root@redhat7 ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 //輸出省略
[root@redhat7 ~]# ll /etc/pki/CA/cacert.pem //我們的CA證書 -rw-r--r--. 1 root root 1302 Sep 11 17:08 /etc/pki/CA/cacert.pem
(3)為CA提供所需要的目錄及文件 //存在則可以忽略
[root@redhat7 ~]# mkdir /etc/pki/CA/{certs,crl,newcerts} [root@redhat7 ~]# touch /etc/pki/CA/{serial,index.txt} [root@redhat7 ~]# echo 01 > /etc/pki/CA/serial [root@redhat7 ~]# tree /etc/pki/CA /etc/pki/CA ├── cacert.pem ├── certs ├── crl ├── index.txt ├── newcerts ├── private │ └── cakey.pem └── serial 4 directories, 4 files
至此:我們的CA服務器已經配置完成
假設某服務器要用到證書進行安全通信,需要向CA請求簽署證書 (此時我們換臺centos 6.8 的主機)
我們以httpd服務為例
確保安裝有httpd服務
[root@centos6 ~]# mkdir /etc/httpd/ssl
(1)生成私鑰
[root@centos6 ~]# (umask 077 ; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) Generating RSA private key, 2048 bit long modulus ...........................................................................+++ .............................................................+++ e is 65537 (0x10001) [root@centos6 ~]# ll /etc/httpd/ssl/httpd.key -rw-------. 1 root root 1679 Sep 7 02:55 /etc/httpd/ssl/httpd.key
(2)生成證書簽署請求
[root@centos6 ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
此處要和圖三信息一樣 否則可能會簽署失敗 (由于是自建的私有CA)
(3)將請求通過可靠方式發送給CA主機
這里我們通過SCP命令來實現
[root@centos6 ~]# scp /etc/httpd/ssl/httpd.csr root@10.1.0.111:/tmp //將本地的httpd.csr文件復制一份到10.1.0.111主機的/tmp目錄下
這里我們切換到CA服務器 即 centos 7 上
在CA主機上簽署證書
[root@redhat7 ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 httpd.crt 即為 centos6 上的 httpd 的證書
查看證書中的信息:
[root@redhat7 ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject serial=01 subject= /C=CN/ST=Beijing/O=Sxj/OU=Si/CN=asher.com
同時數據塊中也有相應的記錄
[root@redhat7 ~]# cat /etc/pki/CA/index.txt V 170911110034Z 01 unknown /C=CN/ST=Beijing/O=Sxj/OU=Si/CN=asher.com
原創文章,作者:sixijie,如若轉載,請注明出處:http://www.www58058.com/49646