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

JDK keytool 常用指令完整速查:金鑰庫建立、憑證匯入匯出、簽署驗證

     編輯:Java 相關知識

keytool 定位

keytool 是 JDK 內建的金鑰與憑證管理工具,操作 .keystore / .jks / .p12 等金鑰庫檔案,常用於 HTTPS 憑證部署、Android APP 簽署、JVM 信任存儲維護。

核心指令分類速查

1. 金鑰庫與金鑰對建立


# 建立 RSA 2048 位元金鑰對,存入 keystore.jks
keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 \
        -keystore keystore.jks -storepass changeit -keypass changeit \
        -dname "CN=example.com, OU=IT, O=MyOrg, L=City, ST=State, C=CN" \
        -validity 365

2. 憑證請求 (CSR) 產生與簽署


# 產生 CSR
keytool -certreq -alias mykey -keystore keystore.jks -storepass changeit \
        -file mykey.csr

# CA 簽署後匯入回覆憑證
keytool -importcert -alias mykey -keystore keystore.jks -storepass changeit \
        -file mykey_signed.crt

3. 憑證匯入/匯出/列印


# 列印金鑰庫內容
keytool -list -v -keystore keystore.jks -storepass changeit

# 匯出憑證 (公鑰)
keytool -exportcert -alias mykey -keystore keystore.jks -storepass changeit \
        -rfc -file mykey.pem

# 匯入信任憑證到 cacerts (需管理員權限)
keytool -importcert -alias myca -keystore $JAVA_HOME/lib/security/cacerts \
        -storepass changeit -file ca.pem -noprompt

4. 格式轉換 (JKS ↔ PKCS12)


# JKS → PKCS12 (跨平台相容性佳)
keytool -importkeystore -srckeystore keystore.jks -srcstorepass changeit \
        -destkeystore keystore.p12 -deststoretype PKCS12 -deststorepass changeit

# PKCS12 → JKS
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass changeit \
        -destkeystore keystore.jks -deststorepass changeit

5. 刪除條目


keytool -delete -alias oldkey -keystore keystore.jks -storepass changeit

6. 變更密碼


keytool -storepasswd -keystore keystore.jks -storepass changeit -new newpass
keytool -keypasswd -alias mykey -keystore keystore.jks -storepass newpass -keypass changeit -new newpass

實務最佳實踐

  1. 統一用 PKCS12:Java 9+ 預設即為 PKCS12,跨語言相容性優於 JKS。
  2. 區分 storepass / keypass:生產環境建議不同,降低單一洩漏風險。
  3. 憑證鏈完整:匯入簽署憑證前,先 -importcert 根/中繼 CA 到同金鑰庫或 cacerts。
  4. 自動化腳本:CI/CD 中以環境變數注入密碼,避免明文寫在腳本。

常見錯誤與對策

錯誤原因解決
keytool error: java.io.IOException: Keystore was tampered with密碼錯誤或檔案損壞確認 -storepass、檔案完整性
Certificate reply does not contain public key for <alias>CSR 與回覆憑證金鑰不符同一 alias 產生 CSR 並匯入回覆
Failed to establish chain from reply缺少中繼/根 CA先匯入完整 CA 鏈
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved