centos下利用openssl來實現證書的頒發
直接進入正題,細節坑就不說了,自己解決起來更有挑戰性不是
步驟流程:
我是拿的7.3版本做CA主機,6.8版本做客戶端
1.創建CA
2.生成私鑰
3.生成自簽名證書
4.到客服端
5.生成私鑰
6.生成證書申請文件
7.將請求發送給-CA主機
8.CA主機-驗證簽署
9.拷回給客戶端使用
用法:openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-salt]
openssl 的配置文件:/etc/pki/tls/openssl.cnf
選項:
-ciphername:指明算法;
-in filename:要加密的文件;
-out filename:加密后的文件的存放位置;
-pass arg:指明密碼;
-e:加密;
-d:解密;
-a/-base64:文本格式編碼,默認二進制格式編碼;
-salt:給密碼添加隨機數;
創建CA:
為CA提供所需的目錄及文件,無則創建,有則無需創建(這個非常重要的,關乎到證書的成功與否)
#touch /etc/pki/CA/index.txt
#echo 01 > /etc/pki/CA/serial
生成私鑰:# (umask 077;openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS);
():表示啟動一個子shell,在子shell中運行的命令只對子shell起作用不影響父shell;
-out:生成的私鑰保存的位置;
NUM_BITS:秘鑰位長,它必須是2的n次方倍,例如512、1024、2048、4096等。
#公鑰是從私鑰中提取的;
#默認放置于/etc/pki/CA/private/目錄;
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
使用遮罩碼077是為了確保私鑰文件只有屬主可讀寫
生成自簽證書;默認放置于/etc/pki/CA/目錄;
#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
-x509:生成自簽格式證書,專用于創建私有CA時,非自簽證書無需加該選項;
-key:生成請求時用到的私有文件路徑;便于自動從該路徑提取公鑰;
-out:生成的請求文件路徑,如果自簽操作將直接生成簽署過的證書;
– days:證書的有效時長,單位是day;
#內容要按照cat /etc/pki/tls/openssl.cnf配置文件的格式要求
三大嚴格要求 1.國家 2.省份 3.公司
如下圖
生成公鑰 :cakey.pem
自簽證書:cacert.pem
這是生成文件的格式要求,必須在這個目錄中
記好填寫的信息
CA證書就制作ok了
下面咱們就可以一本正經的申請證書了
以httpd為例);
用到證書的主機生成私鑰
# mkdir /etc/httpd/ssl 這個私鑰的放置目錄自己指定,沒有要求,用的時候,指定位置就可以了
# cd /etc/httpd/ssl
# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
用到證書的主機生成證書簽署請求
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365 (后面-day指定的證書時限有些說道,這個時間不是我們這里決定的,所以多少無所謂,反正也不生效,歸CA來指定)
這里和CA的信息必須一致
生成私鑰 :httpd.key
生成證書申請文件:httpd.csr
文件格式要求一樣的,后綴必須是這個
下面將請求通過可靠方式發送給CA主機;
# scp /etc/httpd/ssl/httpd.csr root@172.16.27.7:root (也可以用U盤拷貝)
CA主機在確認安全的情況下 可以簽署發證了
在CA主機上簽署證書;
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 (這里的時間才是決定證書的有效期,可以任意指定)
之后,把證書在拷回給客戶端使用,任務完成。
字母“V”表示該證書已簽署;
原創文章,作者:All well,如若轉載,請注明出處:http://www.www58058.com/73183