Java 使用keytool創建CA證書的操作
keytool是一個密鑰和證書管理工具
1.keytool工具位置
keytool工具在 JDK 的安裝目錄的 bin 目錄下面
2.keytool工具命令展示
打開命令行進入 bin 目錄,然後輸入命令 keytool.exe,就能看見keytool工具支持哪些命令,如下圖所示:
註意下面的用法提示:使用 “keytool -command_name -help” 獲取 command_name 的用法
3.查看具體命令用法
這裡我們使用 -genkeypair 命令來創建密鑰庫,先來看看 genkeypair 命令的用法,如下圖所示:
4.新建密鑰庫
.\keytool.exe -genkeypair -alias CA -keyalg RSA -validity 30 -keystore D:\keytoolCert\.CAkeystore
4.1.參數說明
-alias CA: alias表示別名的意思,這裡別名為 CA,如果不寫的話,它的默認值為 mykey
-keyalg RSA: 密鑰算法名稱,這裡使用RSA算法
-validity 30: 有效天數為30天
-keystore D:\keytoolCert.CAkeystore: 指定密鑰庫存放的位置。
命令輸入過後會讓我們輸入密碼、唯一判別名(dname)和密鑰口令
註意
密鑰庫的密碼至少必須6個字符,可以是純數字或者字母或者數字和字母的組合等等
名字與姓氏”應該是輸入域名,而不是我們的個人姓名,其他的可以不填
這條命令的完整含義是:使用 keytool.exe ,創建一個別名為 CA,算法為 RSA,有效天數為30天的密鑰,並將它存放在 D:\keytoolCert\ 目錄下的一個名叫 .CAkeystore 的密鑰庫中,如果密鑰庫不存在則自動創建。
執行完上述命令後,在 D:\keytoolCert\ 目錄下生成瞭一個”.CAkeystore”的文件,如下圖所示:
5.查看密鑰庫裡面的信息
命令如下:
.\keytool.exe -list -keystore D:\keytoolCert\.CAkeystore -v
結果如下:
5.1.查看密鑰庫信息其他命令
查看密鑰庫中指定密鑰的信息:
keytool.exe -list -alias CA -keystore “D:\keytoolCert.CAkeystore” -v
6.導出密鑰到證書文件
.\keytool -export -alias CA -file D:\keytoolCert\pendIssueCert_1.cer -keystore D:\keytoolCert\.CAkeystore
執行完上述命令後,在 D:\keytoolCert\ 目錄下生成瞭一個”pendIssueCert_1.cer”的證書文件,如下圖所示:
7.查看指定證書文件的信息:
keytool.exe -printcert -file D:\keytoolCert\.pendIssueCert_1.cer -v
8.導入證書
將證書文件 pendIssueCert_1.cer 導入到名為 .pendIssuekeystore 的證書庫中
keytool -import -keystore D:\keytoolCert\.pendIssuekeystore -file D:\keytoolCert\pendIssueCert_1.cer
註意:
D:\keytoolCert.pendIssuekeystore 密鑰庫不存在會自動創建
導入時沒有輸入 -alias 那麼它的別名就是 mykey ,如果有需要可以自己指定別名
9.刪除密鑰庫中的條目
刪除密鑰庫 .pendIssuekeystore 中別名為 mykey 的證書條目
keytool -delete -keystore D:\keytoolCert\.pendIssuekeystore -alias mykey
刪除前先查看 有一個密鑰,刪除後再查看就沒有瞭,表示刪除成功。
修改證書條目的口令
將密鑰庫 .pendIssuekeystore 中別名為 mykey 的證書條目的密碼修改為 123456
keytool -keypasswd -alias mykey -keystore D:\keytoolCert.pendIssuekeystore
補充:Java Keytool生成數字證書/.cer/.p12文件
任何機構或者個人都可以申請數字證書,並使用由CA機構頒發的數字證書為自己的應用保駕護航。常用的兩個證書管理工具:KeyTool,OpenSSL—>構建CSR(Certificate Signing Request,數字證書簽發申請),交由CA機構簽發,形成最終的數字證書。
最近用到p12文件,就記錄一下如何使用jdk自帶的keytool來創建p12文件
創建私鑰和證書
1.打開cmd,切換到jdk的bin目錄下
2.輸入命令
keytool -genkeypair -alias serverkey -keyalg RSA -keysize 2048 -validity 3650 -keystore C:\Users\i343740\Desktop\p12test.keystore
參數解釋:
storepass keystore 文件存儲密碼,不加這個參數會在後面要求你輸入密碼
keypass 私鑰加解密密碼
alias 實體別名(包括證書私鑰)
dname 證書個人信息
keyalg 采用公鑰算法,默認是DSA,這裡采用RSA
keysize 密鑰長度(DSA算法對應的默認算法是sha1withDSA,不支持2048長度,此時需指定RSA)
validity 有效期
keystore 指定keystore文件儲存位置
3.命令行會要求你輸入一些信息,這裡隻是試用,隨意輸一些就可以瞭
What is your first and last name? [Unknown]: xu What is the name of your organizational unit? [Unknown]: SAP What is the name of your organization? [Unknown]: SAP What is the name of your City or Locality? [Unknown]: ShangHai What is the name of your State or Province? [Unknown]: ShangHai What is the two-letter country code for this unit? [Unknown]: CN Is CN=xu, OU=SAP, O=SAP, L=ShangHai, ST=ShangHai, C=CN correct? [no]: Y
4.最後一行: 輸入的密鑰口令,這裡因為我們在上面設置瞭一個密鑰庫的口令,因此這裡的口令如果和上面設置的口令一樣的話,就直接回車就好,如果兩個口令不一樣,那麼我們可以輸入新的口令,回車
5.經過上述操作,秘鑰庫中已經創建瞭數字證書(沒有經過CA認證),但不影響我們使用。我們可以將數字證書導出,發送給合作夥伴進行加密交互。
查看keystore詳情
1.輸入命令
keytool -v -list -keystore C:\Users\i343740\Desktop\p12test.keystore
可以看到keystore詳情:
Keystore type: jks Keystore provider: SUN Your keystore contains 1 entry Alias name: serverkey Creation date: Sep 18, 2018 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=xu, OU=SAP, O=SAP, L=ShangHai, ST=ShangHai, C=CN Issuer: CN=xu, OU=SAP, O=SAP, L=ShangHai, ST=ShangHai, C=CN Serial number: 68a01736 Valid from: Tue Sep 18 15:29:16 CST 2018 until: Fri Sep 15 15:29:16 CST 2028 Certificate fingerprints: MD5: 6D:02:83:77:1D:8F:80:4A:7E:71:10:E5:D1:F7:DA:A1 SHA1: 50:A7:46:DE:BC:9E:0E:22:AC:AD:85:63:3D:29:FB:FF:75:66:55:3E SHA256: 78:C4:65:71:A2:54:2B:56:2E:7B:8F:16:7D:EB:53:46:4E:9C:0C:AF:55:F8:3E:0C:37:FC:CD:A6:8C:04:9E:84 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 ......(還有一些)
導出本地證書(.cer)
1.輸入命令
keytool -exportcert -keystore C:\Users\i343740\Desktop\p12test.keystore -file C:\Users\i343740\Desktop\p12test.cer -alias serverkey
參數解釋:
-export 表示證書導出操作
-keystore 指定秘鑰庫文件
-file 指定導出文件路徑
-storepass 輸入密碼
-rfc 指定以Base64編碼格式輸出
打印數字證書
1.輸入命令
Keytool -printcert -file C:\Users\i343740\Desktop\p12test.cer
將.cer格式的證書轉換為p12證書
1.輸入命令
keytool -importkeystore -srckeystore C:\Users\i343740\Desktop\p12test.keystore -destkeystore C:\Users\i343740\Desktop\p12test.p12 -srcalias serverkey -destalias serverkey -srcstoretype jks -deststoretype pkcs12 -noprompt
2.輸入目標密鑰庫口令和源密鑰庫口令即可(目標密鑰庫口令指的是我們要為.p12證書設置的口令,而源密鑰庫口令則指的是我們最初為.cer證書設置的密鑰庫口令)
P12的兩個命令:
生成證書:
keytool -genkey -v -alias client -keyalg RSA-storetype PKCS12 -keystore C:\Users\i343740\Desktop\p12test.p12
導出證書:
keytool -export -alias client -keystore C:\Users\i343740\Desktop\p12test.p12-storetype PKCS12 -storepass 123456 -rfc -file C:\Users\i343740\Desktop\p12test.cer
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- Java制作證書的工具keytool用法詳解
- 關於Keytool配置 Tomcat的HTTPS雙向認證的問題
- Nginx本地配置SSL訪問的實例教程
- SpringBoot生成License的實現示例
- 獲取Android簽名MD5的方式實例詳解