本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 2:產生或匯入私有金鑰和 SSL/TLS 憑證
若要啟用 HTTPS,Tomcat Web 伺服器應用程式需要私有金鑰和對應 SSL/TLS 憑證。若要搭配使用網頁伺服器 SSL/TLS 卸載 AWS CloudHSM,您必須將私密金鑰儲存在叢集中的 HSM 中。 AWS CloudHSM
注意
如果您還沒有私有金鑰和對應的憑證,可以在 HSM 中產生私有金鑰。您可以使用私有金鑰建立憑證簽署請求 (CSR),以用來建立 SSL/TLS 憑證。
您可以建立一個本機 AWS CloudHSM KeyStore 檔案,其中包含 HSM 上私密金鑰和相關聯憑證的參考。在 SSL/TLS 卸載期間,您的 Web 伺服器會使用該 AWS CloudHSM KeyStore 檔案來識別 HSM 上的私密金鑰。
產生私有金鑰
本節說明如何使用 JDK 產生金鑰配對。 KeyTool 在 HSM 內部產生 key pair 之後,您可以將其匯出為 KeyStore 檔案,然後產生對應的憑證。
根據您的使用案例,您可以產生 RSA 或 EC 金鑰對。下列步驟說明如何產生 RSA 金鑰對。
使用中的genkeypair
指 KeyTool 令產生 RSA key pair
用特定數據替換以下
<VARIABLES>
後,請使用下列命令產生名為jsse_keystore.keystore
的金鑰存放區檔案,該檔案將具有 HSM 上私有金鑰的參考。$
keytool -genkeypair -alias
<UNIQUE ALIAS FOR KEYS>
-keyalg<KEY ALGORITHM>
-keysize<KEY SIZE>
-sigalg<SIGN ALGORITHM>
\ -keystore<PATH>
/<JSSE KEYSTORE NAME>
.keystore -storetype CLOUDHSM \ -dname CERT_DOMAIN_NAME \ -J-classpath '-J'$JAVA_LIB'/*:/opt/cloudhsm/java/*:./*' \ -provider "com.amazonaws.cloudhsm.jce.provider.CloudHsmProvider" \ -providerpath "$CLOUDHSM_JCE_LOCATION" \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE PASSWORD>
<PATH>
:您要生成金鑰存放區檔案的路徑。<UNIQUE ALIAS FOR KEYS>
:這是用於唯一識別 HSM 上的金鑰。此別名將被設置為金鑰的 LABEL 屬性。<KEY PASSWORD>
:我們會將您金鑰的參考儲存在本機金鑰儲存檔案中,而此密碼會保護該本機參考。<KEYSTORE PASSWORD>
:這是本機金鑰存放區檔案的密碼。<JSSE KEYSTORE NAME>
:金鑰存放區檔案的名稱。<CERT DOMAIN NAME>
:X.500 辨別名稱。<KEY ALGORITHM>
:生成金鑰對的金鑰算法(例如,RSA 和 EC)。<KEY SIZE>
:要產生金鑰對的金鑰大小 (例如,2048、3072 和 4096)。<SIGN ALGORITHM>
:要產生金鑰對的金鑰大小 (例如,SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA 和 SHA512withRSA)。
-
若要確認命令是否成功,請輸入下列命令,並確認您是否已成功產生 RSA 金鑰對。
$
ls
<PATH>
/<JSSE KEYSTORE NAME>
.keystore
產生自簽憑證。
產生私有金鑰與金鑰存放區檔案後,您可以使用此檔案來產生憑證簽署要求 (CSR) 和憑證。
在生產環境中,您通常會使用憑證授權單位 (CA) 從 CSR 建立憑證。測試環境不需要 CA。如果您確實使用 CA,請將 CSR 檔案發送給他們,並使用他們在 Web 伺服器中為您提供 HTTPS 的簽名 SSL/TLS 憑證。
作為使用 CA 的替代方法,您可以使用建 KeyTool 立自我簽署憑證。自簽憑證不受瀏覽器所信任,請勿用於生產環境。可以用於測試環境。
警告
自簽憑證應該只用於測試環境。若為生產環境,請使用更安全的方法 (例如憑證授權單位) 來建立憑證。
主題
產生憑證
-
取得先前步驟中產生的金鑰存放區檔案的副本。
-
執行下列命令以使用 KeyTool 建立憑證簽署要求 (CSR)。
$
keytool -certreq -keyalg RSA -alias unique_alias_for_key -file certreq.csr \ -keystore
<JSSE KEYSTORE NAME>
.keystore -storetype CLOUDHSM \ -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE PASSWORD>
注意
憑證簽署請求的輸出檔案為
certreq.csr
。
簽署憑證
-
用特定數據替換以下
<VARIABLES>
後,請執行下列命令,以在 HSM 上的私有金鑰簽署 CSR。這會建立自簽憑證。$
keytool -gencert -infile certreq.csr -outfile certificate.crt \ -alias
<UNIQUE ALIAS FOR KEYS>
-keypass<KEY_PASSWORD>
-storepass<KEYSTORE_PASSWORD>
-sigalg SIG_ALG \ -storetype CLOUDHSM -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keystore jsse_keystore.keystore注意
certificate.crt
是使用別名私有金鑰的簽署憑證。
在金鑰存放區中匯入憑證
用特定數據替換以下
<VARIABLES>
後,請執行下列命令,將已簽署的憑證匯入為受信任的憑證。此步驟會將憑證儲存在別名所識別的金鑰存放區項目中。$
keytool -import -alias
<UNIQUE ALIAS FOR KEYS>
-keystore jsse_keystore.keystore \ -file certificate.crt -storetype CLOUDHSM \ -v -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE_PASSWORD>
將憑證轉換為 PEM
執行下列命令,將已簽署的憑證檔案 (.crt) 轉換為 PEM。PEM 檔案將用於從 http 用戶端發送請求。
$
openssl x509 -inform der -in certificate.crt -out certificate.pem
完成這些步驟之後,前往步驟 3:設定 Web 伺服器。