使用 keytool 可以設定和使用 JSSE (Java 安全套接字延伸) 數位憑證。在 Platform Edition 的伺服器端,Application Server 使用 JSSE 格式來管理憑證和金鑰庫。在 Platform Edition 和 Enterprise Edition 中,用戶端 (應用程式用戶端或獨立用戶端) 均使用 JSSE 格式。
J2SE SDK 附帶有 keytool,可以讓管理員管理公開/私密金鑰對和關聯憑證。還可以讓使用者快取正與其通訊的另一方的公開金鑰 (以證書形式)。
若要執行 keytool,必須配置 shell 環境,以使 J2SE /bin 目錄位於路徑中,或者指令行中必須存在該工具的完整路徑。如需有關 keytool 的更多資訊,請參閱位於以下位置的 keytool 文件:http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html。
以下範例說明了與使用 JSSE 工具處理憑證相關的用法︰
使用 RSA 金鑰演算法在類型為 JKS 的金鑰庫中建立自我簽署憑證。RSA 是 RSA Data Security, Inc. 開發的公開金鑰加密技術。RSA 的首字母縮略分別代表該技術的三位發明者:Rivest、Shamir 和 Adelman。
keytool -genkey -noprompt -trustcacerts -keyalg RSA -alias ${cert.alias} -dname ${dn.name} -keypass ${key.pass} -keystore ${keystore.file} -storepass ${keystore.pass} |
使用 keytool 公用程式產生憑證中提供了建立憑證的另一個範例。
使用預設金鑰演算法在類型為 JKS 的金鑰庫中建立自我簽署憑證。
keytool -genkey -noprompt -trustcacerts -alias ${cert.alias} -dname ${dn.name} -keypass ${key.pass} -keystore ${keystore.file} -storepass ${keystore.pass} |
使用 keytool 公用程式簽署數位憑證中提供了簽署憑證的範例。
顯示類型為 JKS 的金鑰庫中的可用憑證。
keytool -list -v -keystore ${keystore.file} -storepass ${keystore.pass} |
顯示類型為 JKS 的金鑰庫中的憑證資訊。
keytool -list -v -alias ${cert.alias} -keystore ${keystore.file} -storepass ${keystore.pass} |
將 RFC/文字格式的憑證匯入 JKS 庫中。憑證通常會以網際網路 RFC (註釋請求) 1421 標準定義的可列印編碼格式 (而非憑證的二進位編碼) 加以儲存。此憑證格式 (也稱為 Base 64 編碼) 便於透過電子郵件或某些其他機制將憑證匯出至其他應用程式。
keytool -import -noprompt -trustcacerts -alias ${cert.alias} -file ${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass} |
從類型為 JKS 的金鑰庫中以 PKCS7 格式匯出憑證。公開金鑰加密標準 #7 (加密訊息語法標準) 定義的回覆格式除了包含已核發的憑證外,還包含支援憑證鏈。
keytool -export -noprompt -alias ${cert.alias} -file ${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass} |
從類型為 JKS 的金鑰庫中以 RFC/文字格式匯出憑證。
keytool -export -noprompt -rfc -alias ${cert.alias} -file ${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass} |
從類型為 JKS 的金鑰庫中刪除憑證。
keytool -delete -noprompt -alias ${cert.alias} -keystore ${keystore.file} -storepass ${keystore.pass} |
使用 keytool 公用程式刪除憑證中提供了從金鑰庫中刪除憑證的另一個範例。
使用 keytool 產生、匯入和匯出憑證。依預設,keytool 將在其執行目錄中建立金鑰庫檔案。
變更至要執行憑證的目錄。
始終在包含金鑰庫檔案和信任庫檔案的目錄中產生憑證,依預設,該目錄為 domain-dir/config。如需有關變更這些檔案位置的資訊,請參閱變更憑證檔案的位置。
輸入以下 keytool 指令,以在金鑰庫檔案 keystore.jks 中產生憑證:
keytool -genkey -alias keyAlias-keyalg RSA -keypass changeit -storepass changeit -keystore keystore.jks |
使用任何專屬名稱做為 keyAlias。如果您已變更金鑰庫或私密金鑰密碼的預設值,請使用新密碼取代以上指令中的 changeit。
螢幕上將顯示提示,要求您提供姓名、組織和其他資訊,keytool 將使用這些資訊產生憑證。
輸入以下 keytool 指令,以將產生的憑證匯出至檔案 server.cer (或 client.cer [如果您願意]):
keytool -export -alias keyAlias-storepass changeit -file server.cer -keystore keystore.jks |
如需由憑證授權機構簽署的憑證,請參閱使用 keytool 公用程式簽署數位憑證。
若要建立信任庫檔案 cacerts.jks,並將憑證增加至該信任庫,請輸入以下 keytool 指令:
keytool -import -v -trustcacerts -alias keyAlias -file server.cer -keystore cacerts.jks -keypass changeit |
如果您已變更金鑰庫或私密金鑰密碼的預設值,請使用新密碼取代以上指令中的 changeit。
工具將顯示有關證書的資訊並提示您是否要信任該證書。
鍵入 yes,然後按下 Enter 鍵。
keytool 便會顯示如下資訊:
Certificate was added to keystore [Saving cacerts.jks] |
重新啟動 Application Server。
建立數位憑證之後,所有者必須簽署該憑證以防偽造。電子商務站點或那些身份認證對其很重要的站點可以從知名的憑證授權機構 (CA) 購買憑證。如果無需考量認證 (例如當私密安全通訊可以滿足全部需求時),則可節省獲取 CA 憑證所花費的時間和費用並使用自我簽署憑證。
請依照 CA 網站上的說明產生憑證金鑰對。
下載產生的證書金鑰對。
將憑證儲存在包含金鑰庫檔案和信任庫檔案的目錄中,依預設,該目錄為 domain-dir/config。請參閱變更憑證檔案的位置。
在 shell 中,變更至包含憑證的目錄。
使用 keytool 將憑證匯入本機金鑰庫和本機信任庫 (如有必要)。
keytool -import -v -trustcacerts -alias keyAlias -file server.cer -keystore cacerts.jks -keypass changeit -storepass changeit |
如果金鑰庫密碼或私密金鑰密碼不是預設密碼,請使用新密碼取代以上指令中的 changeit。
重新啟動 Application Server。
若要刪除現有憑證,請使用 keytool -delete 指令,例如:
keytool -delete -alias keyAlias -keystore keystore-name -storepass password
如需有關 -delete 指令之可能選項的完整清單,請參閱位於以下位置的 keytool 文件:http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html。