溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JAVA Keytool工具怎么生成Keystore和Truststore文件

發(fā)布時(shí)間:2021-06-24 12:06:43 來(lái)源:億速云 閱讀:848 作者:chen 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“JAVA Keytool工具怎么生成Keystore和Truststore文件”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“JAVA Keytool工具怎么生成Keystore和Truststore文件”吧!

Keystore可以存放除了證書(shū)、公鑰外其它敏感信息,比如密碼、私鑰……證書(shū)可以是關(guān)聯(lián)的證書(shū)或者一個(gè)證書(shū)鏈。證書(shū)鏈有客戶端證書(shū)和一個(gè)或多個(gè)CA證書(shū)。

Truststore僅僅包含客戶端信任的證書(shū)、公鑰。它無(wú)法存放敏感信息。

一、生成含有一個(gè)私鑰的keystore文件

keytool -genkeypair -alias certificatekey -keyalg RSA -validity 7 -keystore keystore.jks

上述命令執(zhí)行后,我們需要輸入文件加密密碼、相關(guān)個(gè)人信息以及秘鑰口令(秘鑰口令可以與文件加密密碼一致)。樣例輸出如下:

輸入密鑰庫(kù)口令:
再次輸入新口令:
您的名字與姓氏是什么?
  [Unknown]:  chris
您的組織單位名稱是什么?
  [Unknown]:  free
您的組織名稱是什么?
  [Unknown]:  free
您所在的城市或區(qū)域名稱是什么?
  [Unknown]:  city
您所在的省/市/自治區(qū)名稱是什么?
  [Unknown]:  city
該單位的雙字母國(guó)家/地區(qū)代碼是什么?
  [Unknown]:  cn
CN=chris, OU=free, O=free, L=city, ST=city, C=cn是否正確?
  [否]:  y

輸入 <certificatekey> 的密鑰口令
        (如果和密鑰庫(kù)口令相同, 按回車):
再次輸入新口令:

Warning:
JKS 密鑰庫(kù)使用專用格式。建議使用 "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12" 遷移到行業(yè)標(biāo)準(zhǔn)格式 PKCS12。

二、查看生成的keystore文件

keytool -list -v -keystore keystore.jks

上述命令執(zhí)行后,我們需要輸入之前設(shè)定的文件加密密碼。校驗(yàn)成功后,命令會(huì)展示出keystore文件的內(nèi)容,樣例輸出如下:

輸入密鑰庫(kù)口令:
密鑰庫(kù)類型: jks
密鑰庫(kù)提供方: SUN

您的密鑰庫(kù)包含 1 個(gè)條目

別名: certificatekey
創(chuàng)建日期: 2019-11-21
條目類型: PrivateKeyEntry
證書(shū)鏈長(zhǎng)度: 1
證書(shū)[1]:
所有者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
發(fā)布者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
序列號(hào): 2b57a2eb
有效期為 Thu Nov 21 14:17:26 CST 2019 至 Thu Nov 28 14:17:26 CST 2019
證書(shū)指紋:
         MD5:  1F:FE:8E:D1:70:98:13:B8:06:2A:FB:7A:A6:88:D8:C4
         SHA1: 87:71:6B:37:16:0D:78:4A:48:53:70:6F:6D:ED:0C:81:5C:6D:D0:09
         SHA256: 05:06:9A:CC:69:18:C6:D1:45:FA:4C:59:38:70:69:FC:6B:4B:B2:C8:BF:9B:0A:11:9E:FA:2E:DE:48:C9:38:29
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴(kuò)展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 80 05 7D……

三、導(dǎo)出證書(shū)

keytool -export -alias certificatekey -keystore keystore.jks -rfc -file selfsignedcert.cer

上述命令導(dǎo)出證書(shū)到文件selfsignedcert.cer中,命令執(zhí)行時(shí),需要輸入keystore文件加密密碼。樣例輸出結(jié)果如下:

輸入密鑰庫(kù)口令:
存儲(chǔ)在文件 <selfsignedcert.cer> 中的證書(shū)

四、導(dǎo)入證書(shū)到truststore文件中

keytool -import -alias certificatekey -file selfsignedcert.cer  -keystore truststore.jks

上述命令執(zhí)行時(shí),要求輸入truststore文件加密密碼。命令執(zhí)行成功后,證書(shū)selfsignedcert.cer被增加到了truststore.jks文件中。樣例輸出如下:

輸入密鑰庫(kù)口令:
再次輸入新口令:
所有者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
發(fā)布者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
序列號(hào): 2b57a2eb
有效期為 Thu Nov 21 14:17:26 CST 2019 至 Thu Nov 28 14:17:26 CST 2019
證書(shū)指紋:
         MD5:  1F:FE:8E:D1:70:98:13:B8:06:2A:FB:7A:A6:88:D8:C4
         SHA1: 87:71:6B:37:16:0D:78:4A:48:53:70:6F:6D:ED:0C:81:5C:6D:D0:09
         SHA256: 05:06:9A:CC:69:18:C6:D1:45:FA:4C:59:38:70:69:FC:6B:4B:B2:C8:BF:9B:0A:11:9E:FA:2E:DE:48:C9:38:29
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴(kuò)展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 80 05 7D 67 5E 18 89 4F   95 E8 60 41 B3 C4 6C 8D  ...g^..O..`A..l.
0010: 38 90 8E 0B                                        8...
]
]

是否信任此證書(shū)? [否]:  y
證書(shū)已添加到密鑰庫(kù)中

五、查看生成的truststore文件

keytool -list -v -keystore truststore.jks

上述命令執(zhí)行時(shí),要求輸入truststore加密密碼。之后會(huì)展示truststore的相關(guān)內(nèi)容,樣例輸出如下:

輸入密鑰庫(kù)口令:
密鑰庫(kù)類型: jks
密鑰庫(kù)提供方: SUN

您的密鑰庫(kù)包含 1 個(gè)條目

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

所有者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
發(fā)布者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
序列號(hào): 2b57a2eb
有效期為 Thu Nov 21 14:17:26 CST 2019 至 Thu Nov 28 14:17:26 CST 2019
證書(shū)指紋:
         MD5:  1F:FE:8E:D1:70:98:13:B8:06:2A:FB:7A:A6:88:D8:C4
         SHA1: 87:71:6B:37:16:0D:78:4A:48:53:70:6F:6D:ED:0C:81:5C:6D:D0:09
         SHA256: 05:06:9A:CC:69:18:C6:D1:45:FA:4C:59:38:70:69:FC:6B:4B:B2:C8:BF:9B:0A:11:9E:FA:2E:DE:48:C9:38:29
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴(kuò)展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 80 05 7D 67 5E 18 89 4F   95 E8 60 41 B3 C4 6C 8D  ...g^..O..`A..l.
0010: 38 90 8E 0B                                        8...
]
]

六、Java指定keystore和truststore

-Djavax.net.ssl.keyStore=keystore.jks
-Djavax.net.ssl.keyStorePassword=******
-Djavax.net.ssl.trustStore=truststore.jks
-Djavax.net.ssl.trustStorePassword=******

上面的所有參數(shù)均為JVM啟動(dòng)參數(shù),設(shè)置keystore和truststore屬性。其中keystore與truststore屬性均為文件的具體路徑。如果沒(méi)有顯示指定上述屬性,那么JVM默認(rèn)使用$JAVA_HOME/lib/security/cacerts文件作為truststore,并讀取其中的授信證書(shū)(默認(rèn)密碼為changeit)。

到此,相信大家對(duì)“JAVA Keytool工具怎么生成Keystore和Truststore文件”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI