1. 程式人生 > >OpenSSL生成根證書CA及簽發子證書

OpenSSL生成根證書CA及簽發子證書

系統:CentOS7 32位

目標:使用OpenSSL生成一個CA根證書,並用這個根證書頒發兩個子證書server和client。

先確保系統中安裝了OpenSSL,若沒安裝,可以通過以下命令安裝:

?
1 sudo yum install openssl

修改OpenSSL的配置

安裝好之後,定位一下OpenSSL的配置檔案openssl.cnf:

?
1 locate openssl.cnf

132715_aC8K_1434710.bmp

如圖,我這裡的目錄是/etc/pki/tls/openssl.cnf。

修改配置檔案,修改其中的dir變數,重新設定SSL的工作目錄:

133703_4jgc_1434710.png

由於配置檔案中,dir變數下還有幾個子資料夾需要用到,因此在自定義的資料夾下面也建立這幾個資料夾或檔案,它們是:

141401_y7ay_1434710.png

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

143654_AoUE_1434710.png

該命含義如下:

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"

152612_Ulk8_1434710.png

該命令含義如下:

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

152740_yYK9_1434710.png

該命令的含義如下:

x509——生成x509格式證書

-req——輸入csr檔案

-days——證書的有效期(天)

-sha1——證書摘要採用sha1演算法

-extensions——按照openssl.cnf檔案中配置的v3_ca項新增擴充套件

-signkey——簽發證書的私鑰

-in——要輸入的csr檔案

-out——輸出的cer證書檔案

之後看一下certs資料夾裡生成的ca.cer證書檔案