ref: http://rhythm-zju.blog.163.com/blog/static/310042008015115718637/
利用 OpenSSL 建立 CA 及自行簽發證書。
在CA的配置文件中,有說明默認CA的目錄。 創建默認CA下的目錄及文件如下圖(.old文件和.attr文件是簽發證書后自動生成的文件)。
其中, newcerts目錄用于存放CA簽署(頒發)過的數字證書(證書備份目錄)。 PRivate目錄用于存放CA的私鑰。 文件serial和index.txt分別用于存放下一個證書的序列號和證書信息數據庫。 文件serial填寫第一個證書序列號(如10000001),之后每前一張證書,序列號自動加1。
genrsa——用于生成 RSA 密鑰對的 OpenSSL 命令。
openssl genrsa -des3 -out ./demoCA/private/cakey.pem 2048
-des3
使用 3-DES 對稱加密算法加密密鑰對,該參數需要用戶在密鑰生成過程中輸入一個口令用于加密。今后使用該密鑰對時,需要輸入相應的口令。如果不加該選項,則不對密鑰進行加密。
req——用于生成證書請求的 OpenSSL 命令。
openssl req -new -days 365 -key ./demoCA/private/cakey.pem -out careq.pem
-new 生成一個新的證書請求。該參數將令 OpenSSL 在證書請求生成過程中要求用戶填寫一些相應的字段。
-days 365 從生成之時算起,證書時效為 365 天。
-key ./demoCA/private/cakey.pem 指定 ./demoCA/private/cakey.pem 為證書所使用的密鑰對文件。
-out careq.pem 令生成的證書請求保存到文件 careq.pem 。
ca——用于執行 CA 相關操作的 OpenSSL 命令。 OpenSSL 使用證書請求中附帶的密鑰對對該請求進行簽名,也就是所謂的“ self sign ”(自簽名)。
openssl ca -selfsign -in careq.pem -out cacert.pem
-selfsign 使用對證書請求進行簽名的密鑰對來簽發證書。
-in careq.pem 指定 careq.pem 為證書請求文件。
-out cacert.pem 指定 cacert.pem 為輸出的CA根證書。
第三步和第四步,可以用一條命令來完成。
openssl req -new -x509 -days 365 -key ./demoCA/private/cakey.pem -out cacert.pem
關鍵參數:-x509
openssl genrsa -des3 -passout pass:123456 -out userkey.pem 1024
-passout arg: arg為對稱加密的密碼(使用這個參數就省去了console交互提示輸入密碼的環節)
openssl req -new -days 365 -key userkey.pem -out userreq.pem
openssl ca -in userreq.pem -out usercert.pem
原因:CA根證書找不到,第4步生成的根證書放的位置不對。把4步生成的cacert.pem移動到./demoCA目錄下即可。
仍然失敗,原因:證書請求文件的單位名稱和CA根證書的證書請求文件的單位名稱不一致。而在Openssl的配置文件中,要求一致。 將[policy_match]的
organizationName = match
改為:organizationName = optional
再次簽名成功了。
openssl x509 -in usercert.pem -text -noout
將證書文件后綴名改為crt,在Windows中可以直接查看。
新聞熱點
疑難解答