本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CloudHSM SSL/TLS 使用 Tomcat 搭配 卸載 Linux JSSE
本主題提供 step-by-step使用 Java Secure Socket Extension (JSSE) 搭配 AWS CloudHSM JCE 設定SSL/TLS卸載的指示SDK。
概觀
在 中 AWS CloudHSM,Tomcat Web 伺服器可在 Linux 上運作以支援 HTTPS。SDK 提供可與 AWS CloudHSM JCEJSSE(Java Secure Socket Extension) 搭配使用的介面,以針對此類 Web 伺服器啟用 HSMs 。 AWS CloudHSM JCE 是連接至 JSSE AWS CloudHSM 叢集的橋接器。JSSE 是 Java API for Secure Sockets Layer (SSL) 和 Transport Layer Security (TLS) 通訊協定。
步驟 1:設定先決條件
請依照這些先決條件,搭配 使用 Tomcat Web 伺服器 AWS CloudHSM ,搭配 Client SDK 5 和 Tomcat Web 伺服器SSL/TLS offload on Linux. These prerequisites must be met to set up web server SSL/TLS卸載。
注意
不同平台需要不同的先決條件。請務必遵循適用於平台的正確安裝步驟。
必要條件
-
執行已安裝 A tomcat Web 伺服器的 Linux 作業系統的 Amazon EC2執行個體。
-
在 上擁有和管理 Web 伺服器私有金鑰的加密使用者 (CU)HSM。
-
具有至少兩個硬體安全模組 (HSMs) 的作用中 AWS CloudHSM 叢集,其中已安裝並設定 JCE 用戶端 SDK 5 的 。
注意
您可以使用單一HSM叢集,但必須先停用用戶端金鑰耐久性。如需詳細資訊,請參閱管理用戶端金鑰耐久性設定和用戶端 SDK 5 設定工具 。
如何滿足先決條件
-
在具有至少兩個硬體安全模組 () 的作用中 AWS CloudHSM 叢集 AWS CloudHSM 上安裝和設定 JCE 的 HSMs。如需安裝的詳細資訊,請參閱 JCE for Client SDK 5。
-
在可存取 AWS CloudHSM 叢集的 EC2 Linux 執行個體上,遵循 Apache Tomcat 指示
下載並安裝 Tomcat Web 伺服器。 -
使用 CloudHSM CLI 建立加密使用者 (CU)。如需管理HSM使用者的詳細資訊,請參閱使用雲端HSM管理HSM使用者。 CLI
提示
保持追蹤 CU 使用者名稱和密碼。稍後當您為 Web 伺服器產生或匯入HTTPS私有金鑰和憑證時,您將需要這些金鑰和憑證。
若要JCE使用 Java Keytool 設定 ,請遵循 中的指示使用用戶端 SDK 5 AWS CloudHSM 與 Java Keytool 和 Jarsigner 整合。
完成這些步驟之後,請移至 步驟 2:產生或匯入私有金鑰和SSL/TLS憑證。
備註
-
若要使用 Security-Enhanced Linux (SELinux) 和 Web 伺服器,您必須允許連接埠 2223 上的傳出TCP連線,這是 Client SDK 5 用來與 通訊的連接埠HSM。
-
若要建立和啟用叢集,並授予叢集的EC2執行個體存取權,請完成入門 AWS CloudHSM中的步驟。本節提供 step-by-step使用 HSM和 Amazon EC2用戶端執行個體建立作用中叢集的指示。可以使用此用戶端執行個體做為 Web 伺服器。
-
若要避免停用用戶端金鑰耐久性,HSM請將多個 新增至叢集。如需詳細資訊,請參閱將 HSM新增至 AWS CloudHSM 叢集。
-
若要連線至用戶端執行個體,您可以使用 SSH或 Pu TTY。如需詳細資訊,請參閱 Amazon EC2 文件中的使用 連線至您的 Linux 執行個體SSH,或從 Windows 使用 Pu 連線至您的 Linux 執行個體TTY。
步驟 2:產生或匯入私有金鑰和SSL/TLS憑證
若要啟用 HTTPS,您的 Tomcat Web 伺服器應用程式需要私有金鑰和具有 的對應SSL/TLS certificate. To use web server SSL/TLS卸載 AWS CloudHSM,您必須將私有金鑰存放在 AWS CloudHSM 叢集中的 HSM中。
注意
如果您還沒有私有金鑰和對應的憑證,請在 中產生私有金鑰HSM。您可以使用私有金鑰來建立憑證簽署請求 (CSR),並用來建立 SSL/TLS 憑證。
您可以在 和相關聯的憑證上建立本機 AWS CloudHSM KeyStore 檔案,其中包含對私有金鑰HSM的參考。您的 Web 伺服器會在 SSL/TLS 卸載HSM期間使用 AWS CloudHSM KeyStore 檔案來識別 上的私有金鑰。
產生私有金鑰
本節說明如何使用 KeyTool 來自 的 產生金鑰對JDK。在 內產生金鑰對後HSM,即可將其匯出為 KeyStore 檔案,並產生對應的憑證。
根據您的使用案例,您可以產生 RSA或 EC 金鑰對。下列步驟說明如何產生RSA金鑰對。
使用 中的genkeypair
命令 KeyTool 來產生RSA金鑰對
取代 後
<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>
:Keystore 檔案的名稱。<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 伺服器中為您提供的已簽署SSL/TLS憑證HTTPS。
除了使用 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>
使用特定資料執行下列命令,在 CSR 上使用私有金鑰簽署您的 HSM。這會建立自簽憑證。$
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 伺服器。
步驟 3:設定 Tomcat Web 伺服器
更新您的 Web 伺服器軟體組態,以使用您在上一個步驟中建立的HTTPS憑證和對應的PEM檔案。請記得在開始之前備份現有的憑證和金鑰。這將完成使用 為 SSL/TLS 卸載設定 Linux Web 伺服器軟體 AWS CloudHSM。如需詳細資訊,請參閱 Apache Tomcat 9 組態參考
停止伺服器
取代 後
<VARIABLES>
使用特定資料執行下列命令,在更新組態之前停止 Tomcat Server$
/
<TOMCAT DIRECTORY>
/bin/shutdown.sh<TOMCAT DIRECTORY>
:您的 Tomcat 安裝目錄。
更新 Tomcat 類別路徑
-
連接至您的用戶端執行個體。
-
找到 Tomcat 安裝資料夾。
-
取代 後
<VARIABLES>
使用下列命令,搭配您的特定資料,在 Tomcat classpath 中新增 Java 程式庫和 Cloudhsm Java 路徑,該路徑位於 Tomcat/bin/catalina.sh 檔案。$
sed -i 's@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar:'"
<JAVA LIBRARY>
"'\/*:\/opt\/cloudhsm\/java\/*:.\/*@'<TOMCAT PATH>
/bin/catalina.sh<JAVA LIBRARY>
:Java JRE Library 位置。<TOMCAT PATH>
:Tomcat 安裝資料夾。
在伺服器組態中新增HTTPS連接器。
前往 Tomcat 安裝資料夾。
取代 後
<VARIABLES>
使用下列命令搭配您的特定資料,新增HTTPS連接器以使用先決條件中產生的憑證:$
sed -i '/<Connector port="8080"/i <Connector port=\"443\" maxThreads=\"200\" scheme=\"https\" secure=\"true\" SSLEnabled=\"true\" keystoreType=\"CLOUDHSM\" keystoreFile=\"
<CUSTOM DIRECTORY>
/<JSSE KEYSTORE NAME>
.keystore\" keystorePass=\"<KEYSTORE PASSWORD>
\" keyPass=\"<KEY PASSWORD>
\" keyAlias=\"<UNIQUE ALIAS FOR KEYS>
" clientAuth=\"false\" sslProtocol=\"TLS\"/>'<TOMCAT PATH>
/conf/server.xml<CUSTOM DIRECTORY>
:金鑰存放區檔案所在的目錄。<JSSE KEYSTORE NAME>
:Keystore 檔案的名稱。<KEYSTORE PASSWORD>
:這是本機金鑰存放區檔案的密碼。<KEY PASSWORD>
:我們會將對金鑰的參考儲存在本機金鑰存放區檔案中,此密碼會保護該本機參考。<UNIQUE ALIAS FOR KEYS>
:此用於在 上唯一識別您的金鑰HSM。此別名將設定為金鑰的LABEL屬性。<TOMCAT PATH>
:Tomcat 資料夾的路徑。
啟動伺服器
取代 後
<VARIABLES>
使用下列命令來啟動 Tomcat Server:$
/
<TOMCAT DIRECTORY>
/bin/startup.sh注意
<TOMCAT DIRECTORY>
是 Tomcat 安裝目錄的名稱。
在更新您的 Web 伺服器組態之後,請移至 步驟 4:啟用HTTPS流量並驗證憑證。
步驟 4:啟用HTTPS流量並驗證憑證
使用 設定 SSL/TLS 卸載 Web 伺服器後 AWS CloudHSM,請將 Web 伺服器執行個體新增至允許傳入HTTPS流量的安全群組。這可讓 Web 瀏覽器等用戶端與您的 Web 伺服器建立HTTPS連線。然後與 Web 伺服器建立HTTPS連線,並驗證其是否使用您為 SSL/TLS 卸載設定的憑證 AWS CloudHSM。
啟用傳入HTTPS連線
若要從用戶端 (例如 Web 瀏覽器) 連線至 Web 伺服器,請建立允許傳入HTTPS連線的安全群組。具體而言,它應該允許連接埠 443 上的傳入TCP連線。將此安全群組指派到您的 Web 伺服器。
為 建立安全群組,HTTPS並將其指派給您的 Web 伺服器
-
在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/
。 -
在導覽窗格中選擇安全群組。
-
選擇建立安全群組。
-
對於 Create Security Group (建立安全群組),執行下列動作:
-
對於 Security group name (安全群組名稱),輸入您要建立之安全群組的名稱。
-
(選用) 輸入您要建立之安全群組的描述。
-
針對 VPC,選擇包含 Web 伺服器 Amazon EC2執行個體VPC的 。
-
選取 Add Rule (新增規則)。
-
對於類型 ,HTTPS請從下拉式清單中選取 。
-
對於來源,輸入來源位置。
-
選擇建立安全群組。
-
-
在導覽窗格中,選擇 Instances (執行個體)。
-
選取 Web 伺服器執行個體旁的核取方塊。
-
選取頁面頂端的動作下拉式選單。選取安全性,然後選取變更安全群組。
-
針對相關聯的安全群組 ,選取搜尋方塊,然後選擇您為 建立的安全群組HTTPS。然後選擇新增安全群組。
-
選取 Save (儲存)。
驗證 是否HTTPS使用您設定的憑證
將 Web 伺服器新增至安全群組後,您可以驗證 SSL/TLS 卸載是否使用自我簽署憑證。您可以使用 Web 瀏覽器或使用 OpenSSL s_client
使用 Web 瀏覽器驗證SSL/TLS卸載
-
使用 Web 瀏覽器,使用伺服器的公有DNS名稱或 IP 地址連線至您的 Web 伺服器。確保地址列URL中的 以 https://. 開頭 例如:
https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/
。提示
您可以使用 Amazon Route 53 之類的DNS服務,將網站的網域名稱 (例如 https://www.example.com/) 路由至 Web 伺服器。如需詳細資訊,請參閱 Amazon Route 53 開發人員指南或 服務文件中的將流量路由至 Amazon EC2執行個體。 DNS
-
使用您的 Web 瀏覽器來檢視 Web 伺服器憑證。如需詳細資訊,請參閱下列內容:
其他 Web 瀏覽器可能有類似的功能,可供您用來檢視 Web 伺服器憑證。
-
確定 SSL/TLS 憑證是您設定 Web 伺服器使用的憑證。
使用 OpenSSL s_client 驗證SSL/TLS卸載
-
執行下列 OpenSSL 命令,使用 連線至您的 Web 伺服器HTTPS。Replace (取代)
<server name>
使用 Web 伺服器的公有DNS名稱或 IP 地址。openssl s_client -connect
<server name>
:443提示
您可以使用 Amazon Route 53 之類的DNS服務,將網站的網域名稱 (例如 https://www.example.com/) 路由至 Web 伺服器。如需詳細資訊,請參閱 Amazon Route 53 開發人員指南中的將流量路由至 Amazon EC2執行個體,或在您的 DNS服務文件中。
-
確定 SSL/TLS 憑證是您設定 Web 伺服器使用的憑證。
您現在有一個使用 保護的網站HTTPS。Web 伺服器的私有金鑰會儲存在 AWS CloudHSM 叢集HSM中的 中。
若要新增負載平衡器,請參閱 使用 Elastic Load Balancing 新增負載平衡器 AWS CloudHSM(選用)。