A與B雙方通信,需要通過簽證機構CA頒發證書,才可以互相信任,從而安全的進行數據傳輸。想要獲取證書,除了付費購買認證機構的證書,還可以自簽名獲取證書。
openssl命令可以搭建CA,實現自簽名證書。下面以三臺主機為例,模擬根CA、子CA的搭建,以及客戶端申請證書的過程。
一、搭建根CA
/etc/pki/tls/openssl.cnf文件是openssl的配置文件,其中規定了CA證書的存放目錄、工作目錄、證書編號、策略等信息,搭建CA需要以配置文件為參考。
1.創建文件:
a.生成證書索引數據庫文件
touch /etc/pki/CA/index.txt
b.指定第一個頒發證書的序列號
echo 01> /etc/pki/CA/serial
2.CA自簽證書(第一個CA自己為自己簽名)
生成私鑰:(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
由于私鑰文件很重要,需要設置權限,使其他人無法查看,genrsa代表RSA算法,CA的私鑰存放目錄是配置文件中規定的,2048代表指定私鑰位數。
3.生成自簽名證書:
openssl req -new -x509 -key?/etc/pki/CA/private/cakey.pem -days 3650 ?-out /etc/pki/CA/cacer.pem
其中,new表示新證書簽署請求;x509表示生成自簽名證書;key表示用到的私鑰文件;days表示證書有效期;out后面跟證書的保存路徑。運行命令行之后,會交互式填寫信息,由于配置文件中默認的策略是policy_match,所以CA與客戶端申請時填寫的國家,省,公司名必須匹配,其他信息像通用名可以不一樣,但必須填寫。
二、搭建子CA
1.創建文件:
a.生成證書索引數據庫文件
touch /etc/pki/CA/index.txt
b.指定第一個頒發證書的序列號
echo 02> /etc/pki/CA/serial
2.生成私鑰:
(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
3.生成證書申請文件:
openssl req -new -key?/etc/pki/CA/private/cakey.pem ?-out ?subca.csr
根據默認策略,所填寫的國家,省,公司必須與根CA一致
4.將文件復制到根CA中:
scp ?subca.csr ?192.168.25.129 :/etc/pki/CA (以?192.168.25.129主機為根CA)
5.頒發證書:
openssl ca -in subca.csr -out /etc/pki/CA/certs/subca.crt ?-days ?300
6.將文件傳給申請者:
scp certs/subca.crt 192.168.25.6 : /etc/pki/CA/cacert.pem (以192.168.25.6主機為子CA)
這樣,子CA就搭建成功了。
三、客戶端申請證書
1.生成私鑰:
(umask 066;openssl genrsa -out /etc/pki/tls/private/app.key ?2048)
2.生成證書申請文件:
openssl req -new -key?/etc/pki/tls/private/app.key ?-out ?/etc/pki/tls/app.csr
交互式填寫國家,州,公司要與子CA信息一致。
3. 將文件復制到子CA中:
scp ?app.csr ?192.168.25.6 : /etc/pki/CA
4.頒發證書:
openssl ca -in app.csr -out /etc/pki/CA/certs/app.crt ?-days ?100
5.將證書文件傳送給申請者:
scp certs/app.crt 192.168.25.6 : /etc/pki/tls/certs (以192.168.25.6主機為客戶端)
最后,還可以查看證書信息:
openssl x509 -in app.crt -noout -text|issuer|subject|dates
其中,text代表全部信息,issuer代表頒發者,subject代表主題,dates代表有效期
在同一客戶端可以為其他程序申請證書,無需再生成私鑰,只要重新申請證書即可。默認一個證書申請文件不能頒發兩個證書,這與index.txt.attr文件有關,只需將文件中unique_subject的值由yes改為no即可。
當證書過期或者不受信任時,可以吊銷證書:
openssl ca -revoke /etc/pki/CA/newcerts/02.pem (以02編號證書為例)
指定第一個吊銷證書的編號:
echo 01 > /etc/pki/CA/crlnumber
更新證書吊銷列表:
openssl ?ca -gencrl ?-out /etc/pki/CA/crl/crl.pem
文件 /etc/pki/CA/crlnumber中存放的則是下一個吊銷證書的編號。
至此,CA的搭建以及證書的申請過程就結束了。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86826