keytool 命令用法

keytool 是一個 Java Development Kit (JDK) 中提供的金鑰和憑證管理工具。它允許您管理金鑰庫(keystore)、金鑰對(key pairs)和憑證(certificates)。

基本語法
keytool [指令] [選項]

常見指令
以下是一些 keytool 的常見指令:
-genkeypair: 產生金鑰對(公鑰和私鑰)。
-importcert: 匯入憑證或憑證鏈。
-exportcert: 匯出憑證。
-list: 列出金鑰庫中的條目。
-printcert: 印出憑證的內容。
-delete: 刪除金鑰庫中的條目。
-certreq: 產生憑證簽署請求 (CSR)。
-storepasswd: 變更金鑰庫的密碼。
-keypasswd: 變更金鑰的密碼。

常見選項
以下是一些 keytool 的常見選項:
-alias <別名>: 指定金鑰庫條目的別名。
-keystore <金鑰庫檔案>: 指定金鑰庫檔案的名稱和位置。
-storepass <金鑰庫密碼>: 指定金鑰庫的密碼。
-keypass <金鑰密碼>: 指定金鑰的密碼(如果與金鑰庫密碼不同)。
-file <檔案路徑>: 指定輸入或輸出檔案的路徑。
-dname <識別名稱>: 指定憑證的主體識別名稱(Distinguished Name)。
-validity <天數>: 指定憑證的有效天數。
-list -v: 顯示金鑰庫中憑證的詳細資訊。
-printcert -v: 顯示憑證的詳細內容。
-keyalg <金鑰演算法>: 指定要使用的金鑰演算法 (例如:RSA, DSA, EC)。
-keysize <金鑰大小>: 指定金鑰的大小 (例如:2048 位元)。
-exportcert -rfc: 以 RFC 格式匯出憑證。

範例
以下是一些 keytool 指令的範例:
產生新的金鑰庫和金鑰對:
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.jks -storepass password
這個指令會產生一個名為 mykeystore.jks 的新金鑰庫,其中包含一個名為 myalias 的 RSA 金鑰對,有效期為 365 天。金鑰庫和金鑰的密碼都設為 changeit。

列出金鑰庫中的憑證:
keytool -list -keystore mykeystore.jks -storepass password
這個指令會列出 mykeystore.jks 金鑰庫中的條目。

檢視憑證的詳細資訊:
keytool -list -v -keystore mykeystore.jks -alias myalias -storepass password
這個指令會顯示 myalias 憑證的詳細資訊。

匯出憑證:
keytool -exportcert -alias myalias -file mycertificate.crt -keystore mykeystore.jks -storepass password
這個指令會將 myalias 憑證匯出到 mycertificate.crt 檔案。

匯入憑證到金鑰庫:
keytool -importcert -file cacert.crt -alias mycacert -keystore mytruststore.jks -storepass password
此命令將 cacert.crt 檔案中的憑證匯入到 mytruststore.jks 金鑰庫中,並將其別名設為 mycacert。

更多資訊
執行 keytool -help 以顯示所有可用指令和選項的完整清單。
請參閱 Oracle 的官方 keytool 文件以取得更詳細的資訊:https://docs.oracle.com/en/java/javase/17/docs/specs/man/keytool.html