Java 生成 Https 證書

簡介

通過keytool后綴為.jks的https證書,用于調(diào)試項目使用。

實現(xiàn)

[生成] - 命令生成.jks文件

  • 直接在命令行中鍵入下面的命令
keytool -genkeypair -alias certificatekey -keyalg RSA -validity 365 -keystore shfqkeystore.jks
  • 鍵入后會提下,分別錄入即可:
輸入密鑰庫口令:  
再次輸入新口令: 
您的名字與姓氏是什么?
  [Unknown]:  user-defined
您的組織單位名稱是什么?
  [Unknown]:  user-defined
您的組織名稱是什么?
  [Unknown]:  user-defined
您所在的城市或區(qū)域名稱是什么?
  [Unknown]:  chaoyang
您所在的省/市/自治區(qū)名稱是什么?
  [Unknown]:  bj
該單位的雙字母國家/地區(qū)代碼是什么?
  [Unknown]:  cn
CN=****, OU=***, O=***, L=chaoyang, ST=bj, C=cn是否正確?
  [否]:  y

輸入 <certificatekey> 的密鑰口令
    (如果和密鑰庫口令相同, 按回車): 
  • mac 會提示信息:
Warning:
JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore shfqkeystore.jks -destkeystore shfqkeystore.jks -deststoretype pkcs12" 遷移到行業(yè)標準格式 PKCS12。

我先不管這些信息,繼續(xù)往下做

  • 命令詳解
    keytool -genkeypair -alias certificatekey -keyalg RSA -validity 365 -keystore shfqkeystore.jks
    生成keystore后接著生成一個密鑰對兒。RSA是非對稱密鑰算法,也可以改為 keytool支持的其他密鑰算法,365代表的是證書的有效期,可以自己指定,shfqkeystore.jks是keystroe的名稱,也可以自己指定。打開cmd命令行。

[驗證] - jks是否可以用

  • 鍵入命令行驗證
keytool -list -v -keystore shfqkeystore.jks
  • 響應信息
輸入密鑰庫口令:  
密鑰庫類型: jks
密鑰庫提供方: SUN

您的密鑰庫包含 1 個條目

別名: certificatekey
創(chuàng)建日期: 2019-1-28
條目類型: PrivateKeyEntry
證書鏈長度: 1
證書[1]:
所有者: CN=****, OU=****, O=****, L=chaoyang, ST=bj, C=cn
發(fā)布者: CN=****, OU=****, O=****, L=chaoyang, ST=bj, C=cn
序列號: 1aad9122
有效期為 Mon Jan 28 16:13:11 CST 2019 至 Tue Jan 28 16:13:11 CST 2020
證書指紋:
     MD5:  ************************************
     SHA1: ************************************
     SHA256: ************************************************************************
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: ED A3 DB DD AB 2A 66 21   AD AF D1 17 C9 FA 73 74  .....*f!......st
0010: BB C1 1D 0A                                        ....
]
]

[導出] - 導出公鑰證書

  • 鍵入命令
keytool -export -alias certificatekey -keystore shfqkeystore.jks -rfc -file shfqcert.cer
  • 命令詳解
    其中shfqcert.cer是導出證書的名稱,可以隨便起個名字,shfqkeystore.jks是[驗證] - jks是否可以用中生成的keystore 文件。

[導入] - Truststore的生成以及公鑰證書的導入

把上一步生成的公鑰證書shfqcert.cer導入到truststore中。

  • 鍵入命令
keytool -import -alias certificatekey -file shfqcert.cer  -keystore shfqtruststore.jks
  • 響應信息
輸入密鑰庫口令:  
再次輸入新口令: 
所有者: CN=***, OU=***, O=***, L=chaoyang, ST=bj, C=cn
發(fā)布者: CN=***, OU=***, O=***, L=chaoyang, ST=bj, C=cn
序列號: 1aad9122
有效期為 Mon Jan 28 16:13:11 CST 2019 至 Tue Jan 28 16:13:11 CST 2020
證書指紋:
     MD5:  ************************************
     SHA1: ************************************
     SHA256: ************************************************************************
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: ED A3 DB DD AB 2A 66 21   AD AF D1 17 C9 FA 73 74  .....*f!......st
0010: BB C1 1D 0A                                        ....
]
]

是否信任此證書? [否]:  y
證書已添加到密鑰庫中
  • 命令詳解
    shfqcert.cer是4導出的公鑰證書,shfqtruststore.jks可以隨便起,是生成的truststore的文件名。這條命令首先會生成一個truststore,然后導入[導出] - 導出公鑰證書生成的公鑰證書shfqcert.cer。

[驗證] - 驗證truststore文件

  • 鍵入命令
keytool -list -v -keystore shfqtruststore.jks
  • 響應信息
輸入密鑰庫口令:  
密鑰庫類型: jks
密鑰庫提供方: SUN

您的密鑰庫包含 1 個條目

別名: certificatekey
創(chuàng)建日期: 2019-1-28
條目類型: trustedCertEntry

所有者: CN=***, OU=***, O=***, L=chaoyang, ST=bj, C=cn
發(fā)布者: CN=***, OU=***, O=***, L=chaoyang, ST=bj, C=cn
序列號: 1aad9122
有效期為 Mon Jan 28 16:13:11 CST 2019 至 Tue Jan 28 16:13:11 CST 2020
證書指紋:
     MD5:  ********************************
     SHA1: ********************************
     SHA256: ****************************************************************
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: ED A3 DB DD AB 2A 66 21   AD AF D1 17 C9 FA 73 74  .....*f!......st
0010: BB C1 1D 0A                                        ....
]
]
  • 命令詳解
    shfqtruststore.jks是生成的truststore文件名。
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容