ssl:secure socket layer(安全套接層協議)的縮寫,通過此協議可以保證兩個應用通信的可靠性和保密性。
openssl:是ssl協議的實現。提供了對稱加密算法、非對稱加密算法以及祕鑰證書管理等功能。
公鑰私鑰:公鑰和私鑰組成一個密鑰對,必須配對使用。一般公鑰公開,私鑰自己保留。
公鑰加密,私鑰解密,一般用於傳輸數據;
私鑰加密,公鑰解密,一般用於數字簽名、驗證身份。
證書:全稱是公鑰證書,由第三方機構CA頒發。CA利用自己的私鑰對真正的公鑰施加數字簽名並生成證書,客戶拿到證書後,通過CA的公鑰來對證書解密,拿到真正的公鑰。證書有兩種編碼格式:
1.pem:文本格式,以"-----BEGIN..."開頭,以"-----end..."結尾,內容是base64編碼,Apache和*nix服務器一般使用這種編碼;
2.der:二進制格式,不可讀,windows服務器一般偏向使用這種。
理論介紹差不多了,下面介紹pfx和crt兩種證書的生成。
1.openssl生成祕鑰:
openssl genrsa -out server.key 1024
執行此命令後,會在當前目錄下生成一個長度爲1024的server.key文件。
2.根據server.key文件首先生成cer證書,但該證書不包含私鑰,得生成pfx證書:
#利用server.key文件生成server.cer證書
openssl req -new -x509 -key server.key -out server.cer -days 365 -subj /CN=baidu.com
#利用server.key文件和server.cer證書生成pfx證書
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.cer
執行第二條命令生成pfx證書後,會提示輸入密碼,記住改密碼,後面可以通過此密碼獲取公鑰和私鑰。
#先獲取密鑰對pubAndPri.key文件
openssl pkcs12 -in server.pfx -nocerts -nodes -out pubAndPri.key
#提取公鑰
openssl rsa -in pubAndpri.key -pubout -out server_pub.key
#提取私鑰
openssl rsa -in pubAndpri.key -out server_pri.key
3.根據server.key文件先生成csr證書請求文件,再生成crt證書:
#先根據server.key文件生成server.key證書請求文件
openssl req -new -key server.key -out server.csr
#利用server.key文件和server.csr證書請求文件生成pfx證書
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt