1.首先要生成服務器端的私鑰(key文件):
命令:
openssl genrsa -des3 -out server.key 1024
運行時會提示輸入密碼,此密碼用於加密key文件(參數des3便是指加密算法,當然也可以選用其他你認為安全的算法.),以后每當需讀取此文件(通過openssl提供的命令或API)都需輸入口令
2. 對服務端生成CSR和key
命令:
openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交給CA簽名后形成服務端自己的證書.屏幕上將有提示,依照其指示一步一步輸入要求的個人信息即可.
3.對客戶端也作同樣的命令生成key及csr文件:
命令:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config /etc/pki/tls/openssl.cnf
4.CSR文件必須有CA的簽名才可形成證書.可將此文件發送到verisign等地方由它驗證,需要交費用,這里說下怎么自己做CA。
命令:
openssl req -new -x509 -keyout ca.key -out ca.crt -config /etc/pki/tls/openssl.cnf
5.用生成的CA的證書為剛才生成的server.csr,client.csr文件簽名:
命令:
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf
遇到的問題:
如果提示沒有/etc/pki/CA/index.txt 或者serial文件,那么就按照路徑新建文件即可。
3078239980:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:f_int.c:215:
提示error while loading serial number,一般是因為serial文件中沒有賦初值
解決辦法
[root@test1 ~]#cd /etc/pki/CA
[root@test1 CA]# echo "00" >serial
[root@test1 CA]# cat serial
00
還有一個問題在CA簽名時,最后出現failed to update database錯誤
遇到這個錯誤,只需要清空/etc/pki/CA/index.txt的內容再簽發就可以成功了。
修改CA的一些配置文件
vi /etc/pki/tls/openssl.cnf
:
default_days = 3650 修改證書有效期