JDK自帶工具keytool的使用


JDK里自帶的,位於<JAVA_HOME>\bin\keytool.exe

Keytool將密鑰(key)和證書(certificates)存在一個稱為keystore的文件中
在keystore里,包含兩種數據:
  密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(采用非對稱加密)
  可信任的證書實體(trusted certificate entries)——只包含公鑰

keytool -help

密鑰和證書管理工具

命令:

 -certreq            生成證書請求
 -changealias        更改條目的別名
 -delete             刪除條目
 -exportcert         導出證書
 -genkeypair         生成密鑰對
 -genseckey          生成密鑰
 -gencert            根據證書請求生成證書
 -importcert         導入證書或證書鏈
 -importpass         導入口令
 -importkeystore     從其他密鑰庫導入一個或所有條目
 -keypasswd          更改條目的密鑰口令
 -list               列出密鑰庫中的條目
 -printcert          打印證書內容
 -printcertreq       打印證書請求的內容
 -printcrl           打印 CRL 文件的內容
 -storepasswd        更改密鑰庫的存儲口令

1.創建證書

>keytool -genkeypair -alias "test" -storetype pkcs12  -keyalg "RSA" -keystore "test.p12"
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什么?
  [Unknown]:  li
您的組織單位名稱是什么?
  [Unknown]:  abc
您的組織名稱是什么?
  [Unknown]:  xyz
您所在的城市或區域名稱是什么?
  [Unknown]:  Ji
您所在的省/市/自治區名稱是什么?
  [Unknown]:  Dong
該單位的雙字母國家/地區代碼是什么?
  [Unknown]:  CC
CN=li, OU=abc, O=xyz, L=Ji, ST=Dong, C=CC是否正確?
  [否]:  y

生成了證書test.p12

 

說明:

  -storetype 指定倉庫類型, JKS、 JCEKS、 PKCS12 等

  -keyalg 指定密鑰的算法, RSA、 DSA 等,默認DSA

  -keysize 指定密鑰長度,默認2048

  -alias:指定密鑰對的別名,該別名是公開的

  -keystore:密鑰庫的路徑及名稱

2.查看證書

>keytool -list -keystore test.p12
輸入密鑰庫口令:
密鑰庫類型: JKS
密鑰庫提供方: SUN

您的密鑰庫包含 1 個條目

test, 2020-4-14, PrivateKeyEntry,
證書指紋 (SHA1): 5B:E7:9D:E8:84:6B:17:E4:CF:1C:EA:49:00:38:CD:3B:AF:FC:43:15

3.導出證書

>keytool -export -alias test -file test.crt -keystore test.p12

輸入密鑰庫口令:
存儲在文件 <test.crt> 中的證書

查看crt證書信息

>keytool -printcert -file test.crt
所有者: CN=li, OU=abc, O=xyz, L=Jinan, ST=Shandong, C=China 發布者: CN=li, OU=abc, O=xyz, L=Jinan, ST=Shandong, C=China 序列號: 492e4a72 有效期為 Tue Apr 14 14:33:17 CST 2020 至 Mon Jul 13 14:33:17 CST 2020 證書指紋: MD5: D7:F1:E5:83:D6:6F:3F:77:C0:EE:C3:4A:51:EF:82:D1 SHA1: 5B:E7:9D:E8:84:6B:17:E4:CF:1C:EA:49:00:38:CD:3B:AF:FC:43:15 SHA256: 77:12:78:1D:A7:96:22:CD:C1:18:EC:2F:9C:76:01:59:ED:0B:09:A6:C0:EF:37:F5:BA:41:9C:88 :3A:16:E1:42 簽名算法名稱: SHA256withRSA 主體公共密鑰算法: 2048 位 RSA 密鑰 版本: 3 擴展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: C1 AB 06 D8 FA 6E 91 2C 43 0C DE 66 D1 B6 92 F6 .....n.,C..f.... 0010: D4 8D D6 70 ...p ] ]

4.導入證書

>keytool -import -keystore test_crt -file test.crt
輸入密鑰庫口令:
再次輸入新口令:
所有者: CN=li, OU=abc, O=xyz, L=Jinan, ST=Shandong, C=China
發布者: CN=li, OU=abc, O=xyz, L=Jinan, ST=Shandong, C=China
序列號: 492e4a72
有效期為 Tue Apr 14 14:33:17 CST 2020 至 Mon Jul 13 14:33:17 CST 2020
證書指紋:
         MD5:  D7:F1:E5:83:D6:6F:3F:77:C0:EE:C3:4A:51:EF:82:D1
         SHA1: 5B:E7:9D:E8:84:6B:17:E4:CF:1C:EA:49:00:38:CD:3B:AF:FC:43:15
         SHA256: 77:12:78:1D:A7:96:22:CD:C1:18:EC:2F:9C:76:01:59:ED:0B:09:A6:C0:EF:37:F5:BA:41:9C:88
:3A:16:E1:42
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: C1 AB 06 D8 FA 6E 91 2C   43 0C DE 66 D1 B6 92 F6  .....n.,C..f....
0010: D4 8D D6 70                                        ...p
]
]

是否信任此證書? [否]:  y
證書已添加到密鑰庫中

5.刪除

查看

>keytool -list -keystore test_crt
輸入密鑰庫口令:
密鑰庫類型: JKS
密鑰庫提供方: SUN

您的密鑰庫包含 1 個條目

mykey, 2020-4-14, trustedCertEntry,
證書指紋 (SHA1): 5B:E7:9D:E8:84:6B:17:E4:CF:1C:EA:49:00:38:CD:3B:AF:FC:43:15

刪除

>keytool -delete  -keystore test_crt -alias mykey

6.修改證書條目的口令

>keytool -keypasswd -alias test -keystore test.p12
輸入密鑰庫口令:
輸入 <test> 的密鑰口令
新<test> 的密鑰口令:
重新輸入新<test> 的密鑰口令:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM