Key 是私用密鑰openssl格,通常是rsa算法。
Csr 是證書請求文件,用於申請證書。在制作csr文件的時,必須使用自己的私鑰來簽署申,還可以設定一個密鑰。
Crt 是CA認證后的證書文,(windows下面的,其實是crt),簽署人用自己的key給你簽署的憑證。
一、准備工作
ubuntu下新建文件夾/etc/certstore/,接下來的所有操作都在改文件夾下進行。
首先在/usr/lib/ssl/文件夾下拷貝文件openssl.cnf文件到/etc/certstore/文件夾下,並將該配置文件的路徑修改為當前路徑,如下
[ CA_default ] dir = ./ # Where everything is kept certs = $dir/certs # Where the issued certs are kept #內部文件需生成(用戶證書) crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. new_certs_dir = $dir/newcerts # default place for new certs. #內部文件在生成用戶證書時自動生成(用戶公鑰) certificate = $dir/cacert.pem # The CA certificate #需生成(根證書) serial = $dir/serial # The current serial number crl = $dir/crl.pem # The current CRL # private_key = $dir/private/cakey.pem # The private key #需生成(根私鑰) RANDFILE = $dir/private/.rand # private random number file
然后添加或創建一些文件或文件夾,如下
#mkdir -p ./{private,certs,newcerts,crl} #touch index.txt #echo 01 > serial
二、生成CA證書的步驟:
1.生成CA證書的RSA密鑰對
/etc/certstore# openssl genrsa -des3 -out ./private/cakey.pem 2048
這樣是生成rsa私鑰,des3算法,openssl格式,2048位強度。server.key是密鑰文件名。為了生成這樣的密鑰,需要一個至少四位的密碼。可以通過以下方法生成沒有密碼的key:
# openssl rsa -in server.key -out server.key
*2.生成CA證書請求
/etc/certstore# openssl req -new -days 365 -key ./private/cakey.pem -out ./private/careq.pem (cert.csr)
(CSR文件必須有CA的簽名才可形成證書.可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢.)
*3.對CA證書請求進行簽名
#openssl ca -selfsign -in ./private/careq.pem -out cacert.pem
4.(合並步驟2&3)一步完成CA證書請求及簽名
/etc/certstore# openssl req -new -x509 -days 3650 -key ./private/cakey.pem -out cacert.pem -config openssl.cnf
5.查看pem證書:
# openssl x509 -in cacert.pem -text -noout
三、生成CA自簽名證書
/etc/certstore# openssl genrsa -des3 -out ./certs/cert.key -rand ./private/.rnd 2048
/etc/certstore# openssl req -new -x509 -days 3650 -key ./certs/cert.key -out ./certs/cert.crt -config openssl.cnf
/etc/certstore# openssl ca -ss_cert ./certs/cert.crt -policy policy_anything -out ./certs/signedcert.crt -config openssl.cnf
用第一步生成的CA證書(cacert.pem)加密第二步生成的證書(./certs/cert.crt) 第一步生成的證書是供大家用的(大家用同一個),第二步生成的每個人單獨生成一個。
(1)查看key私鑰文件:
# openssl rsa -in ./certs/cert.key -text -noout
(2)將pem證書裝換成der證書的方法:
# openssl x509 -in tom.crt -out cert.der -outform DER
(3)如果創建證書失敗,失敗后重做的方法:
serial文件中刪除證書序列號; index.txt數據庫文件中刪除該證書的條目; 重新創建證書就可以了。
四、此時,文件結構如下:
. |-- certs | |-- cert.crt | |-- cert.key | `-- signedcert.crt |-- crl |-- newcerts | `-- 01.pem |-- prvate | `-- cakey.pem |-- cacert.pem |-- index.txt |-- index.txt.attr |-- index.txt.old |-- openssl.cnf |-- serial `-- serial.old
了解了這些基礎步驟之后,就可以通過腳本,甚至 makefile 的方式來將這些工作自動化。 CA.pl 和 CA.sh 便是對 OpenSSL 的 CA 相關功能的簡單封裝,在 Debian 系統中,安裝了 OpenSSL 后,可以在 /usr/lib/ssl/misc/ 目錄下找到這兩個文件。 而 makefile 的解決方案則可以參考這里 。
參考資料:
《使用openssl創建CA》 (http://blog.chinaunix.net/uid-20639449-id-1908987.html)
《openssl根證書生成及簽發用戶證書》(http://www.360doc.com/content/16/0506/15/33079507_556777359.shtml)