首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 數位憑證生成完整指南:keytool 實操與 HTTPS 雙向認證鋪墊

     編輯:Java 綜合教學

Java 數位憑證生成完整指南:keytool 實操與 HTTPS 雙向認證鋪墊

加密演算法分類

類別代表演算法特點
非對稱加密RSA、DSA/ECDSA公鑰加密/私鑰解密,適用金鑰交換、數位簽名
對稱加密AES、3DES、ChaCha20同一金鑰加解密,速度快,適用大量資料傳輸
雜湊演算法SHA-256、SHA-3、BLAKE2單向不可逆,適用完整性校驗、密碼儲存

keytool 實操全流程

1. 生成金鑰對與自簽憑證


keytool -genkeypair \
  -keyalg RSA -keysize 2048 \
  -validity 36500 \
  -alias SEC_TEST \
  -keypass 123456 \
  -keystore test.keystore \
  -storepass 123456 \
  -dname "CN=localhost,OU=DEP,O=CN,L=BJ,ST=BJ,C=CN"
  • -dname 區分名:CN(網站/IP)、OU(部門)、O(組織)、L(城市)、ST(省份)、C(國家)
  • 產生 test.keystore(JKS 格式),含私鑰條目與自簽公開鑰憑證

2. 匯出公開鑰憑證


keytool -exportcert \
  -alias SEC_TEST \
  -file test_pub_cer.cer \
  -keystore test.keystore \
  -storepass 123456

產生 .cer 檔,供通訊對方匯入信任庫。

3. 匯入對方公開鑰(建立信任庫)


keytool -importcert \
  -file B.cer \
  -keystore test.keystore \
  -storepass 123456 \
  -alias partner_b

系統提示信任確認,輸入 yes 完成。

4. 查看憑證庫內容


keytool -list -v -keystore test.keystore -storepass 123456

雙向 HTTPS 認證原理

  1. Server 發送憑證,Client 驗證 CA 信任鏈、域名、有效期
  2. Client 發送憑證,Server 驗證同樣邏輯
  3. 雙向驗證通過後,協商對稱會話金鑰(如 AES-GCM)加密傳輸

生產環境建議

  • 使用 PKCS#12 格式 (-storetype pkcs12) 替代 JKS,跨平台相容性更好
  • 私鑰密碼與憑證庫密碼分離,遵循最小權限原則
  • 定期輪換憑證,監控到期時間
  • 生產環境請向受信 CA(Let's Encrypt、DigiCert 等)申請正式憑證

下篇將示範 Spring Boot 整合雙向 HTTPS 完整配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved