OpenSSL生成根證書CA及簽發子證書
系統:CentOS7 32位
目標:使用OpenSSL生成一個CA根證書,並用這個根證書頒發兩個子證書server和client。
先確保系統中安裝了OpenSSL,若沒安裝,可以通過以下命令安裝:
?1 |
sudo yum install openssl
|
修改OpenSSL的配置
安裝好之後,定位一下OpenSSL的配置檔案openssl.cnf:
?1 |
locate openssl.cnf
|
如圖,我這裡的目錄是/etc/pki/tls/openssl.cnf。
修改配置檔案,修改其中的dir變數,重新設定SSL的工作目錄:
由於配置檔案中,dir變數下還有幾個子資料夾需要用到,因此在自定義的資料夾下面也建立這幾個資料夾或檔案,它們是:
certs——存放已頒發的證書
newcerts——存放CA指令生成的新證書
private——存放私鑰
crl——存放已吊銷的整數
index.txt——OpenSSL定義的已簽發證書的文字資料庫檔案,這個檔案通常在初始化的時候是空的
serial——證書籤發時使用的序列號參考檔案,該檔案的序列號是以16進位制格式進行存放的,該檔案必須提供並且包含一個有效的序列號
生成證書之前,需要先生成一個隨機數:
?1 |
openssl rand -out private/.rand 1000
|
該命令含義如下:
rand——生成隨機數
-out——指定輸出檔案
1000——指定隨機數長度
生成根證書
a).生成根證書私鑰(pem檔案)
OpenSSL通常使用PEM(Privacy Enbanced Mail)格式來儲存私鑰,構建私鑰的命令如下:
?1 |
openssl genrsa -aes256 -out private /cakey .pem 1024
|
該命含義如下:
genrsa——使用RSA演算法產生私鑰
-aes256——使用256位金鑰的AES演算法對私鑰進行加密
-out——輸出檔案的路徑
1024——指定私鑰長度
b).生成根證書籤發申請檔案(csr檔案)
使用上一步生成的私鑰(pem檔案),生成證書請求檔案(csr檔案):
?1 2 |
openssl req -new -key private /cakey .pem -out private /ca .csr -subj \
"/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myname"
|
該命令含義如下:
req——執行證書籤發命令
-new——新證書籤發請求
-key——指定私鑰路徑
-out——輸出的csr檔案的路徑
-subj——證書相關的使用者資訊(subject的縮寫)
c).自簽發根證書(cer檔案)
csr檔案生成以後,可以將其傳送給CA認證機構進行簽發,當然,這裡我們使用OpenSSL對該證書進行自簽發:
?1 2 |
openssl x509 -req -days 365 -sha1 -extensions v3_ca -signkey \
private /cakey .pem - in private /ca .csr -out certs /ca .cer
|
該命令的含義如下:
x509——生成x509格式證書
-req——輸入csr檔案
-days——證書的有效期(天)
-sha1——證書摘要採用sha1演算法
-extensions——按照openssl.cnf檔案中配置的v3_ca項新增擴充套件
-signkey——簽發證書的私鑰
-in——要輸入的csr檔案
-out——輸出的cer證書檔案
之後看一下certs資料夾裡生成的ca.cer證書檔案