讀書筆記 openssl證書製作

2021-05-21 21:32:09 字數 1746 閱讀 1687

1. ca命令

openssl中ca功能命令為 ca,所以第乙個關注的section就是ca了。這個section非常簡單,僅包含乙個key:default_ca。

三個default_crl_days,default_days和default_md,對於命令列中的crldays,days和md選項,可以通過使用這些選項來覆蓋配置檔案中設定的值。

policy定義了乙個和證書的dn(distinguished name)字段相同的key集合。對於每乙個key或字段,有三個合法的取值:match,supplied,或者optional。match表示證書請求(csr)中欄位必須和ca證書中的字段匹配;supplied表示證書請求中必須包含此欄位。optional表示該字段在證書請求中是可選的。

x509_extensions指定了ca簽發證書時加入的乙個包含該擴充套件的section。如果缺少該key,openssl建立的是x.509v1證書,但如果存在即使是空,建立的則是x.509v3。例子中唯一包含的擴充套件就是basicconstraints,我們設定為false,所以我們簽發的證書就不能再做ca證書了。

2. 建立自簽名證書

可以簽發證書的ca同樣可以用來簽發crls。

req中default_bits欄位用來指定openssl生成證書的私鑰長度為2048位元組。如果不指定,預設為512位元組。對於ca證書,有必要使用長的金鑰更安全。

default_keyfile指定openssl新生成的私鑰儲存位置。default_md指定對金鑰簽名所使用的訊息摘要演算法。推薦使用sha1,而不是md5。

prompt和distinguished_name欄位指定openssl從什麼地方獲取資訊填充證書的distinguished name。設定prompt為no,表示指定從distinguished_name欄位獲取資訊。預設是從使用者命令列提示輸入獲取資訊,所以這裡必須關掉它。distinguished_name欄位定義的root_ca_distinguished_name中的字段值會放入到證書的每個欄位中去。

最後是x509_extensions指定證書中包含的擴充套件項。該項中名為root_ca_extensions對應的值為true,表示該證書可以用來簽發證書和crls。

如下命令列中選項很少,因為我們在配置檔案中指定了大多數的選項。x509表示生成自簽名證書。

當執行該命令時,openssl會提示兩次輸入金鑰來加密私鑰檔案。

證書生成完成後,可以使用如下命令列印檢視證書資訊。

3. csr(certificate sign request)檔案生成

很奇怪《network security with openssl》書中介紹生成自簽名證書時使用從配置檔案中獲取dn資訊,這裡介紹csr檔案反倒是互動式的。其實這裡也一樣,事先在配置檔案中設定好簽發證書的dn,就不要命令列中輸入那麼多資訊了。

配置項同req。

指定req的擴充套件為ca

檢視csr檔案,新增的擴充套件是ca。

列印資訊如下:

4.  對csr進行簽名:

輸出如下:

如果csr中新增的req extensions好像沒什麼用,還是取決ca簽發命令中的extension。對於一般的使用者證書,那麼extension預設為user_cert即可,這裡使用的是ca_cert,表示這是乙個多級證書,簽發的證書可以作為ca再簽發下一級證書。

4.證書驗證

生成的證書可以使用openssl命令來簡單驗證一下,如果是多級證書,可以把多個ca證書拷到ca.crt乙個檔案中。

crl檔案待續。

使用OpenSSL製作ecc證書

生成ecc證書。debian home test openssl ecparam out eccca.key name prime256v1 genkey debian home test openssl req key eccca.key new outeccca.req debian home ...

每日一得 openssl證書製作步驟

建立openssl環境 1.安裝 openssl 2.進入安裝目錄下的bin資料夾,把bin pem 的democa資料夾複製到bin下 3.進入democa下,新建乙個newcerts的資料夾 步驟概括 在命令列下,進入openssl的bin資料夾,1.openssl genrsa des3 ou...

利用openssl 庫製作證書以及驗證

rsa證書 ca證書 openssl genrsa out cakey.key 1024 2048 這個命令會生成乙個1024 2048位的金鑰。openssl req new x509 key cakey.key out cacert.pem days 1234 這個命令將用上面生成的金鑰cake...