本文為博主原創,未經允許不得轉載:
一般來說,主流的Web服務軟件,通常都基於OpenSSL和Java兩種基礎密碼庫。
-
Tomcat、Weblogic、JBoss等Web服務軟件,一般使用Java提供的密碼庫。通過Java Development Kit (JDK)工具包中的Keytool工具,生成Java Keystore(JKS)格式的證書文件。
-
Apache、Nginx等Web服務軟件,一般使用OpenSSL工具提供的密碼庫,生成PEM、KEY、CRT等格式的證書文件。
證書格式:
-
.DER或.CER文件: 這樣的證書文件是二進制格式,只含有證書信息,不包含私鑰。
-
*.CRT文件: 這樣的證書文件可以是二進制格式,也可以是文本格式,一般均為文本格式,功能與 .DER及.CER證書文件相同。
-
*.PEM文件: 這樣的證書文件一般是文本格式,可以存放證書或私鑰,或者兩者都包含。 .PEM 文件如果只包含私鑰,一般用.KEY文件代替。
-
.PFX或.P12文件: 這樣的證書文件是二進制格式,同時包含證書和私鑰,且一般有密碼保護。
使用openSSL生成證書及證書導入到jks,生成p12證書導入到 jks操作步驟如下:
-
使用 OpenSSL 生成私鑰與簽名證書文件,並根據提示輸入對應的證書屬性包括國家,區域,域名等;
-
生成 cer 的證書文件:根據 第一步生成的私鑰與簽名文件生成一個cer文件 ;
-
將上一步生成的 server.crt 導入到指定的 jks 文件中 ;
-
查看導入 jks 的證書 ;
-
將 1 和2 生成的文件導入到 p12文件中;
-
將生成的P12文件導入到jks中;
1.使用以下命令生成私鑰與簽名證書文件,並根據提示輸入對應的證書屬性包括國家,區域,域名等:
openssl req -new -newkey rsa:2048 -nodes -keyout www.test.com.key -out www.test.com.csr
其中 rsa:2048 為生成的證書的長度,www.test.com.key 為申請生成的私鑰文件,www.test.com.csr 為申請生成的證書簽名請求文件。
CSR是Certificate Signing Request的英文縮寫,即證書簽名請求文件,是證書申請者在申請數字證書時由CSP(加密服務提供者)在生成私鑰的同時也生成證書請求文件,
證書申請者只要把CSR文件提交給證書頒發機構后,證書頒發機構使用其根證書私鑰簽名就生成了證書公鑰文件,也就是頒發給用戶的證書。
CSR是以-----BEGIN CERTIFICATE REQUEST-----開頭,-----END CERTIFICATE REQUEST-----為結尾的base64格式的編碼。將其保存為文本文件,就是所謂的CSR文件。
有CSR必定有KEY,是成對的,CSR最終變成為證書,和私鑰key配對使用。 Key是以-----BEGIN RSA PRIVATE KEY-----開頭的,-----END RSA PRIVATE KEY-----結尾的。
Key必須保存好。證書下發后,CSR無需使用,僅提交時候需要。
2.生成 cer 的證書文件:根據 第一步生成的私鑰與簽名文件生成一個cer文件
openssl x509 -req -days 365 -in www.test.com.csr -signkey www.test.com.key -out www.test.com.crt
x509的含義: 指定格式
-days 365 : 證書的有效期為 365 天
-signkey的含義: 自簽名
3. 將上一步生成的 server.crt 導入到指定的 jks 文件中
keytool -import -trustcacerts -alias testServer -file server.crt -keystore testServer.jks
-trustcacerts -alias testServer : 信任證書並定義別名
4. 查看導入 jks 的證書
keytool -v -list -keystore testServer.jks
查看 jks 中的證書信息
5.將 1 和2 生成的文件導入到 p12文件中:
openssl pkcs12 -export -in server.crt -inkey www.test.com.key -out mycert.p12 -name abc -CAfile myCA.crt
生成過程輸入的密碼就是keypass
name就是別名
6. 將生成的P12文件導入到jks中:
keytool -importkeystore -v -srckeystore mycert.p12 -srcstoretype pkcs12 -srcstorepass a123456 -destkeystore Aserver.keystore -deststoretype jks -deststorepass b123456
deststorepass就是新生成的storepass
7. 重新查看jks中的證書配置:
keytool -v -list -keystore Aserver.keystore
執行如圖: