keytool的使用
參考文檔
https://blog.csdn.net/weisong530624687/article/details/59112309
使用 "keytool -help" 獲取全部可用命令 使用 "keytool -command_name -help" 獲取 command_name 的用法
D:\tools\jdk\bin>keytool --help 密鑰和證書管理工具 命令: -certreq 生成證書請求 -changealias 更改條目的別名 -delete 刪除條目 -exportcert 導出證書 -genkeypair 生成密鑰對 -genseckey 生成密鑰 -gencert 根據證書請求生成證書 -importcert 導入證書或證書鏈 -importpass 導入口令 -importkeystore 從其餘密鑰庫導入一個或全部條目 -keypasswd 更改條目的密鑰口令 -list 列出密鑰庫中的條目 -printcert 打印證書內容 -printcertreq 打印證書請求的內容 -printcrl 打印 CRL 文件的內容 -storepasswd 更改密鑰庫的存儲口令 使用 "keytool -command_name -help" 獲取 command_name 的用法
D:\tools\jdk\bin>keytool -list -help keytool -list [OPTION]... 列出密鑰庫中的條目 選項: -rfc 以 RFC 樣式輸出 -alias <alias> 要處理的條目的別名 -keystore <keystore> 密鑰庫名稱 -storepass <arg> 密鑰庫口令 -storetype <storetype> 密鑰庫類型 -providername <providername> 提供方名稱 -providerclass <providerclass> 提供方類名 -providerarg <arg> 提供方參數 -providerpath <pathlist> 提供方類路徑 -v 詳細輸出 -protected 經過受保護的機制的口令 使用 "keytool -help" 獲取全部可用命令
D:\tools\jdk\bin>keytool -list -v -keystore D:\tools\jdk\jre\lib\security\cacerts 輸入密鑰庫口令: ***************** WARNING WARNING WARNING ***************** * 存儲在您的密鑰庫中的信息的完整性 * * 還沒有通過驗證! 爲了驗證其完整性, * * 必須提供密鑰庫口令。 * ***************** WARNING WARNING WARNING ***************** 密鑰庫類型: jks 密鑰庫提供方: SUN 您的密鑰庫包含 99 個條目 別名: apache_maven2 建立日期: 2019-9-27 條目類型: trustedCertEntry 全部者: CN=repo.maven.apache.org, O="Sonatype, Inc", L=Fulton, ST=MD, C=US 發佈者: CN=DigiCert SHA2 Secure Server CA, O=DigiCert Inc, C=US 序列號: bd6b7c92659ce9ccf8f09d329614a60 有效期爲 Wed Jul 19 08:00:00 CST 2017 至 Thu Sep 03 20:00:00 CST 2020 證書指紋: MD5: CF:AB:3D:D2:D6:2A:74:BE:6B:F7:EA:65:5B:B5:F5:B8 SHA1: 7A:C6:BF:D7:75:12:1F:73:56:D8:DE:C0:A8:C3:23:6F:24:B1:31:9D SHA256: 17:77:B1:86:BF:D4:CE:E0:58:08:37:C8:B6:14:B4:DF:92:90:3D:EF:8D:F4:80:A4:C3:F3:67:CB:81:47:FA:B0 簽名算法名稱: SHA256withRSA 主體公共密鑰算法: 2048 位 RSA 密鑰 版本: 3 擴展: #1: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false AuthorityInfoAccess [ [ accessMethod: ocsp accessLocation: URIName: http://ocsp.digicert.com , accessMethod: caIssuers accessLocation: URIName: http://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt ] ] #2: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 0F 80 61 1C 82 31 61 D5 2F 28 E7 8D 46 38 B4 2C ..a..1a./(..F8., 0010: E1 C6 D9 E2 .... ] ]
D:\tools\jdk\bin>keytool -list -keystore D:\tools\jdk\jre\lib\security\cacerts 輸入密鑰庫口令: ***************** WARNING WARNING WARNING ***************** * 存儲在您的密鑰庫中的信息的完整性 * * 還沒有通過驗證! 爲了驗證其完整性, * * 必須提供密鑰庫口令。 * ***************** WARNING WARNING WARNING ***************** 密鑰庫類型: jks 密鑰庫提供方: SUN 您的密鑰庫包含 99 個條目 apache_maven2, 2019-9-27, trustedCertEntry, 證書指紋 (SHA1): 7A:C6:BF:D7:75:12:1F:73:56:D8:DE:C0:A8:C3:23:6F:24:B1:31:9D verisignclass2g2ca [jdk], 2016-8-25, trustedCertEntry, 證書指紋 (SHA1): B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9D digicertassuredidg3 [jdk], 2016-8-25, trustedCertEntry, 證書指紋 (SHA1): F5:17:A2:4F:9A:48:C6:C9:F8:A2:00:26:9F:DC:0F:48:2C:AB:30:89
建立祕鑰庫並添加條目
keytool -genkeypair -alias xckey -keyalg RSA -keypass xuecheng -keystore E:\mozq\00store\01\xc.keystore -storepass xuechengkeystore
D:\tools\jdk\bin>keytool -genkeypair -alias xckey -keyalg RSA -keypass xuecheng -keystore E:\mozq\00store\01\xc.keystore -storepass xuechengkeystore 您的名字與姓氏是什麼? [Unknown]: liu 您的組織單位名稱是什麼? [Unknown]: liu 您的組織名稱是什麼? [Unknown]: liu 您所在的城市或區域名稱是什麼? [Unknown]: liu 您所在的省/市/自治區名稱是什麼? [Unknown]: liu 該單位的雙字母國家/地區代碼是什麼? [Unknown]: liu CN=liu, OU=liu, O=liu, L=liu, ST=liu, C=liu是否正確? [否]: y Warning: JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore E:\mozq\00store\01\xc.keystore -destkeystore E:\mozq\00store\01\xc.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。
查看祕鑰庫中條目
keytool -list -keystore E:\mozq\00store\01\xc.keystore
D:\tools\jdk\bin>keytool -list -keystore E:\mozq\00store\01\xc.keystore 輸入密鑰庫口令: 密鑰庫類型: jks 密鑰庫提供方: SUN 您的密鑰庫包含 1 個條目 xckey, 2019-10-24, PrivateKeyEntry, 證書指紋 (SHA1): 8A:E1:53:1F:D7:E7:A9:00:C1:0D:9E:8B:2D:09:9C:49:78:B5:21:0B
刪除祕鑰庫中的條目
D:\tools\jdk\bin>keytool -delete -alias xckey -keystore E:\mozq\00store\01\xc.keystore 輸入密鑰庫口令: 密鑰庫口令過短 - 至少必須爲 6 個字符 輸入密鑰庫口令: 密鑰庫口令過短 - 至少必須爲 6 個字符 輸入密鑰庫口令: 密鑰庫口令過短 - 至少必須爲 6 個字符 故障太多 - 請稍後再試 D:\tools\jdk\bin>keytool -delete -alias xckey -keystore E:\mozq\00store\01\xc.keystore 輸入密鑰庫口令:
D:\tools\jdk\bin>keytool -list -keystore E:\mozq\00store\01\xc.keystore 輸入密鑰庫口令: ***************** WARNING WARNING WARNING ***************** * 存儲在您的密鑰庫中的信息的完整性 * * 還沒有通過驗證! 爲了驗證其完整性, * * 必須提供密鑰庫口令。 * ***************** WARNING WARNING WARNING ***************** 密鑰庫類型: jks 密鑰庫提供方: SUN 您的密鑰庫包含 0 個條目
導出祕鑰到證書
D:\tools\jdk\bin>keytool -exportcert -alias xckey -keystore E:\mozq\00store\01\xc.keystore -storepass xuechengkeystore -file E:\mozq\00store\01\xckey.cer -rfc 存儲在文件 <E:\mozq\00store\01\xckey.cer> 中的證書
下載openssl
openssl是一個加解密工具包,用來導出公鑰。html
下載openssl工具。http://slproweb.com/products/Win32OpenSSL.htmljava
下載後雙擊確認。常規安裝 Win64OpenSSL_Light-1_1_1d.exe 。最後一步不要選擇任何捐贈複選框。web
配置環境變量。讓能夠直接在命令行訪問openssl.exe便可。算法
# 環境變量配置成功 C:\Users\1>openssl OpenSSL> exit C:\Users\1>
生成公鑰
D:\tools\java\bin>keytool -list -rfc -keystore E:\mozq\00store\01\xc.keystore | openssl x509 -inform pem -pubkey 輸入密鑰庫口令: xuechengkeystore -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp6t6EooLGMSKQe4f5EMn 7ddI+yNAaRTxLtuEsBZ5x3ueEYwqQUqai0alFT/RVjZIizor6MwNhIcsLTTVTwz8 6UELcq5tM72imdYnDq+DS4ST+7mQ6xswBeLSHI2jWszMdIwt1i9wkGxUamP9+HKW tr80uM6u5G3Cc3fUlw+Rw+vb9qdkX1zyh5duG+Lpl0KV0BnLzBjlE9ujGxKyOi6Q ETzXKNeyraiKfiaepm7bRO16BB/RKD70CpZ7QN1JYVeP0jJ49OrXI/lLtlv3HzM4 cCuKEKPEpNFST6NmF2RTLigoWAJRvFE7xeoxKPvRqpdWYcipWZsibdZOW510w1hm ywIDAQAB -----END PUBLIC KEY----- -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIEdpGZTTANBgkqhkiG9w0BAQsFADBsMRAwDgYDVQQGEwdV bmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYD VQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRAwDgYDVQQDEwdVbmtub3du MB4XDTE5MTAyNDAxNTQyNFoXDTIwMDEyMjAxNTQyNFowbDEQMA4GA1UEBhMHVW5r bm93bjEQMA4GA1UECBMHVW5rbm93bjEQMA4GA1UEBxMHVW5rbm93bjEQMA4GA1UE ChMHVW5rbm93bjEQMA4GA1UECxMHVW5rbm93bjEQMA4GA1UEAxMHVW5rbm93bjCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKerehKKCxjEikHuH+RDJ+3X SPsjQGkU8S7bhLAWecd7nhGMKkFKmotGpRU/0VY2SIs6K+jMDYSHLC001U8M/OlB C3KubTO9opnWJw6vg0uEk/u5kOsbMAXi0hyNo1rMzHSMLdYvcJBsVGpj/fhylra/ NLjOruRtwnN31JcPkcPr2/anZF9c8oeXbhvi6ZdCldAZy8wY5RPboxsSsjoukBE8 1yjXsq2oin4mnqZu20TtegQf0Sg+9AqWe0DdSWFXj9IyePTq1yP5S7Zb9x8zOHAr ihCjxKTRUk+jZhdkUy4oKFgCUbxRO8XqMSj70aqXVmHIqVmbIm3WTluddMNYZssC AwEAAaMhMB8wHQYDVR0OBBYEFP/lb146hrw0/PqvcbLAZRciR6IuMA0GCSqGSIb3 DQEBCwUAA4IBAQADL90LmS38yHUUm7QIoD/Ty2Q0BMICrtRdyD20lY/bp5ylijB+ EiQxbXWv5okqjDxz3zDNwUKct0IGOYQ307IT4Xtc/jM4+o5fyT2kLx7+jTdnwvCt r0cHGkrFUhCZtlbvQba+rmdf3P2CqBWmu7/spm+NDvpFQGCMHv2UWN4IL0sIWQy0 wbXffqor/zq9bLjkA+7PyZ+NN/uQ5LXJNoeMPvdlIw11MFoTZd2ekEWetxfuHh/u K5IDBwLSZDkesXsxN79MlcTbF14Xnz96JSp4vFI/fQOdjYsHSsjgznhMDnK8BYxf HZjXz0M1DJS4FAhn4+OvIltmyj31vU384dW0 -----END CERTIFICATE-----
這個就是公鑰的內容將公鑰拷貝到文本文件,合併爲一行。 -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp6t6EooLGMSKQe4f5EMn 7ddI+yNAaRTxLtuEsBZ5x3ueEYwqQUqai0alFT/RVjZIizor6MwNhIcsLTTVTwz8 6UELcq5tM72imdYnDq+DS4ST+7mQ6xswBeLSHI2jWszMdIwt1i9wkGxUamP9+HKW tr80uM6u5G3Cc3fUlw+Rw+vb9qdkX1zyh5duG+Lpl0KV0BnLzBjlE9ujGxKyOi6Q ETzXKNeyraiKfiaepm7bRO16BB/RKD70CpZ7QN1JYVeP0jJ49OrXI/lLtlv3HzM4 cCuKEKPEpNFST6NmF2RTLigoWAJRvFE7xeoxKPvRqpdWYcipWZsibdZOW510w1hm ywIDAQAB -----END PUBLIC KEY-----
bugs
keytool只能進入jdk的bin目錄下使用。