本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CloudHSM 在 Windows 上使用 IIS 搭配 KSP 的 SSL/TLS 卸載
本教學提供在 Windows Web 伺服器上設定 SSL/TLS 卸載搭配 AWS CloudHSM 的逐步說明。
概觀
在 Windows 上,Internet Information Services (IIS) for Windows Server
此教學課程會讓您了解如何執行以下操作:
-
在 Amazon EC2 執行個體上安裝 Web 伺服器軟體。
-
將 Web 伺服器軟體設定為使用儲存在 AWS CloudHSM 叢集中的私有金鑰來支援 HTTPS。
-
(選用) 使用 Amazon EC2 建立第二個 Web 伺服器執行個體,并使用 Elastic Load Balancing 建立負載平衡器。使用負載平衡器可將負載分散到多部伺服器,進而提升效能。它也可以在一或多個伺服器失敗時提供備援和高可用性。
當您準備好開始時,請移至步驟 1:設定先決條件。
步驟 1:設定先決條件
不同平台需要不同的先決條件。請使用下方符合您平台的先決條件區段。
用戶端 SDK 5 的先決條件
若要使用 設定 Web 伺服器 SSL/TLS 卸載 AWS CloudHSM,您需要下列項目:
-
具有至少一個 HSM 的作用中 AWS CloudHSM 叢集。
-
執行 Windows 作業系統的 Amazon EC2 執行個體,其中已安裝下列軟體:
-
適用於 Windows 的 AWS CloudHSM 用戶端軟體。
-
Internet Information Services (IIS) for Windows Server。
-
-
加密使用者 (CU),擁有及管理 HSM 上 Web 伺服器的私有金鑰。
注意
本教學課程使用 Microsoft Windows Server 2019。也支援 Microsoft Windows Server 2016 和 2022。
設定 Windows 伺服器執行個體,並在 HSM 上建立 CU
-
完成「開始使用」中的步驟。當您啟動 Amazon EC2 用戶端時,請選擇 Windows Server 2019 AMI。當您完成這些步驟,便擁有至少包含一個 HSM 的作用中叢集。您也有執行 Windows Server 的 Amazon EC2 用戶端執行個體,其中已安裝 Windows 用戶端 AWS CloudHSM 軟體。
-
(選用) 在您的叢集中新增更多 HSM。如需詳細資訊,請參閱將 HSM新增至 AWS CloudHSM 叢集。
-
連接至 Windows 伺服器。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
使用 CloudHSM CLI 建立加密使用者 (CU)。保持追蹤 CU 使用者名稱和密碼。您需要它們來完成下一個步驟。
注意
如需如何建立使用者的詳細資訊,請參閱使用 CloudHSM CLI 管理 HSM 使用者。
-
使用您在先前步驟中建立的 CU 使用者名稱和密碼,設定 HSM 的登入資料。
-
在步驟 5 中,如果您使用 Windows 認證管理員來設定 HSM 登入資料,請從 SysInternals 下載
psexec.exe
,以 NT Authority\SYSTEM 的身分執行下列命令: psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --username
<USERNAME>
--password<PASSWORD>
以 HSM 憑證取代
<使用者名稱>
和<密碼>
。
在 Windows 伺服器上安裝 IIS
-
如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
在 Windows 伺服器上,啟動 Server Manager (伺服器管理員)。
-
在 Server Manager (伺服器管理員) 儀表板中,選擇 Add roles and features (新增角色和功能)。
-
閱讀 Before you begin (開始之前) 資訊,然後選擇 Next (下一步)。
-
對於 Installation Type (安裝類型),選擇 Role-based or feature-based installation (角色型或功能型安裝)。然後選擇下一步。
-
對於 Server Selection (伺服器選項),選擇 Select a server from the server pool (從伺服器集區選取伺服器)。然後選擇下一步。
-
對於 Server Roles (伺服器角色),執行下列動作:
-
選取 Web Server (IIS) (Web 伺服器 (IIS))。
-
對於 Add features that are required for Web Server (IIS) (新增 Web 伺服器 (IIS) 需要的功能),選擇 Add Features (新增功能)。
-
選擇 Next (下一步) 來完成伺服器角色的選取。
-
-
針對 Features (功能),接受預設。然後選擇下一步。
-
閱讀 Web Server Role (IIS) (Web 伺服器角色 (IIS)) 資訊。然後選擇下一步。
-
對於 Select role services (選取角色服務),接受預設值或變更為偏好的設定。然後選擇下一步。
-
針對 Confirmation (確認),閱讀確認資訊。然後選擇 Install (安裝)。
-
完成安裝之後,請選擇 Close (關閉)。
完成這些步驟之後,請移至 步驟 2:建立憑證簽署要求 (CSR) 和憑證。
用戶端 SDK 3 的先決條件
若要使用 設定 Web 伺服器 SSL/TLS 卸載 AWS CloudHSM,您需要下列項目:
-
具有至少一個 HSM 的作用中 AWS CloudHSM 叢集。
-
執行 Windows 作業系統的 Amazon EC2 執行個體,其中已安裝下列軟體:
-
適用於 Windows 的 AWS CloudHSM 用戶端軟體。
-
Internet Information Services (IIS) for Windows Server。
-
-
加密使用者 (CU),擁有及管理 HSM 上 Web 伺服器的私有金鑰。
注意
本教學課程使用 Microsoft Windows Server 2016。也支援 Microsoft Windows Server 2012,但不支援 Microsoft Windows Server 2012 R2。
設定 Windows 伺服器執行個體,並在 HSM 上建立 CU
-
完成「開始使用」中的步驟。當您啟動 Amazon EC2 用戶端時,請選擇 Windows Server 2016 或 Windows Server 2012 AMI。當您完成這些步驟,便擁有至少包含一個 HSM 的作用中叢集。您也有執行 Windows Server 的 Amazon EC2 用戶端執行個體,其中已安裝 Windows 用戶端 AWS CloudHSM 軟體。
-
(選用) 在您的叢集中新增更多 HSM。如需詳細資訊,請參閱將 HSM新增至 AWS CloudHSM 叢集。
-
連接至 Windows 伺服器。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
使用 CloudHSM CLI 建立加密使用者 (CU)。保持追蹤 CU 使用者名稱和密碼。您需要它們來完成下一個步驟。
注意
如需如何建立使用者的詳細資訊,請參閱使用 CloudHSM CLI 管理 HSM 使用者。
-
使用您在先前步驟中建立的 CU 使用者名稱和密碼,設定 HSM 的登入資料。
-
在步驟 5 中,如果您使用 Windows 認證管理員來設定 HSM 登入資料,請從 SysInternals 下載
psexec.exe
,以 NT Authority\SYSTEM 的身分執行下列命令: psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --username
<USERNAME>
--password<PASSWORD>
以 HSM 憑證取代
<使用者名稱>
和<密碼>
。
在 Windows 伺服器上安裝 IIS
-
如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
在 Windows 伺服器上,啟動 Server Manager (伺服器管理員)。
-
在 Server Manager (伺服器管理員) 儀表板中,選擇 Add roles and features (新增角色和功能)。
-
閱讀 Before you begin (開始之前) 資訊,然後選擇 Next (下一步)。
-
對於 Installation Type (安裝類型),選擇 Role-based or feature-based installation (角色型或功能型安裝)。然後選擇下一步。
-
對於 Server Selection (伺服器選項),選擇 Select a server from the server pool (從伺服器集區選取伺服器)。然後選擇下一步。
-
對於 Server Roles (伺服器角色),執行下列動作:
-
選取 Web Server (IIS) (Web 伺服器 (IIS))。
-
對於 Add features that are required for Web Server (IIS) (新增 Web 伺服器 (IIS) 需要的功能),選擇 Add Features (新增功能)。
-
選擇 Next (下一步) 來完成伺服器角色的選取。
-
-
針對 Features (功能),接受預設。然後選擇下一步。
-
閱讀 Web Server Role (IIS) (Web 伺服器角色 (IIS)) 資訊。然後選擇下一步。
-
對於 Select role services (選取角色服務),接受預設值或變更為偏好的設定。然後選擇下一步。
-
針對 Confirmation (確認),閱讀確認資訊。然後選擇 Install (安裝)。
-
完成安裝之後,請選擇 Close (關閉)。
完成這些步驟之後,請移至 步驟 2:建立憑證簽署要求 (CSR) 和憑證。
步驟 2:建立憑證簽署要求 (CSR) 和憑證
若要啟用 HTTPS,您的 Web 伺服器需要 SSL/TLS 憑證和對應私有金鑰。若要搭配 SSL/TLS 卸載使用 AWS CloudHSM,請將私有金鑰存放在叢集的 HSM 中 AWS CloudHSM 。為此,請使用適用於 Microsoft 密碼編譯 API 的AWS CloudHSM 金鑰儲存供應商 (KSP):下一代 (CNG) 建立憑證簽署請求 (CSR)。然後,將 CSR 提供給憑證授權機構 (CA),其會簽署 CSR 以產生憑證。
使用用戶端 SDK 5 建立 CSR
-
在 Windows 伺服器上,使用文字編輯器來建立名為
IISCertRequest.inf
的憑證要求檔案。下列示範範例IISCertRequest.inf
檔案的內容。如需您可在檔案中指定之區段、金鑰和數值的詳細資訊,請參閱 Microsoft 文件。請勿變更 ProviderName
值。[Version] Signature = "$Windows NT$" [NewRequest] Subject = "CN=example.com,C=US,ST=Washington,L=Seattle,O=ExampleOrg,OU=WebServer" HashAlgorithm = SHA256 KeyAlgorithm = RSA KeyLength = 2048 ProviderName = "CloudHSM Key Storage Provider" KeyUsage = 0xf0 MachineKeySet = True [EnhancedKeyUsageExtension] OID=1.3.6.1.5.5.7.3.1
-
使用 Windows certreq命令
,從您在上一個步驟中建立 IISCertRequest.inf
的檔案建立 CSR。以下範例會將 CSR 儲存至名為IISCertRequest.csr
的檔案。如果您對憑證要求檔案使用不同的檔案名稱,請將IISCertRequest.inf
取代為適當的檔案名稱。您可以選擇性地將IISCertRequest.csr
取代為 CSR 檔案的不同檔案名稱。C:\>
certreq -new
IISCertRequest.inf
IISCertRequest.csr
CertReq: Request Created
IISCertRequest.csr
檔案包含您的 CSR。您需要此 CSR 才能取得已簽署的憑證。
使用用戶端 SDK 3 建立 CSR
-
如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
使用以下命令啟動 AWS CloudHSM 用戶端常駐程式。
-
在 Windows 伺服器上,使用文字編輯器來建立名為
IISCertRequest.inf
的憑證要求檔案。下列示範範例IISCertRequest.inf
檔案的內容。如需您可在檔案中指定之區段、金鑰和數值的詳細資訊,請參閱 Microsoft 文件。請勿變更 ProviderName
值。[Version] Signature = "$Windows NT$" [NewRequest] Subject = "CN=example.com,C=US,ST=Washington,L=Seattle,O=ExampleOrg,OU=WebServer" HashAlgorithm = SHA256 KeyAlgorithm = RSA KeyLength = 2048 ProviderName = "Cavium Key Storage Provider" KeyUsage = 0xf0 MachineKeySet = True [EnhancedKeyUsageExtension] OID=1.3.6.1.5.5.7.3.1
-
使用 Windows certreq命令
,從您在上一個步驟中建立 IISCertRequest.inf
的檔案建立 CSR。以下範例會將 CSR 儲存至名為IISCertRequest.csr
的檔案。如果您對憑證要求檔案使用不同的檔案名稱,請將IISCertRequest.inf
取代為適當的檔案名稱。您可以選擇性地將IISCertRequest.csr
取代為 CSR 檔案的不同檔案名稱。C:\>
certreq -new
IISCertRequest.inf
IISCertRequest.csr
SDK Version: 2.03 CertReq: Request Created
IISCertRequest.csr
檔案包含您的 CSR。您需要此 CSR 才能取得已簽署的憑證。
取得已簽署的憑證並匯入它
在生產環境中,您通常會使用憑證授權單位 (CA) 從 CSR 建立憑證。測試環境不需要 CA。如果您使用 CA,請將 CSR 檔案 (IISCertRequest.csr
) 傳送至其中,並使用 CA 來建立已簽署的 SSL/TLS 憑證。
除了使用 CA,您也可以使用 OpenSSL
警告
自簽憑證不受瀏覽器所信任,請勿用於生產環境。可以用於測試環境。
以下程序示範如何建立自簽憑證,並使用它來簽署 Web 伺服器 CSR。
建立自簽憑證
-
使用下列 OpenSSL 命令來建立私有金鑰。您可以選擇性地將
SelfSignedCA.key
取代為檔案名稱,以包含您的私有金鑰。openssl genrsa -aes256 -out
SelfSignedCA.key
2048Generating RSA private key, 2048 bit long modulus ......................................................................+++ .........................................+++ e is 65537 (0x10001) Enter pass phrase for SelfSignedCA.key: Verifying - Enter pass phrase for SelfSignedCA.key:
-
使用以下 OpenSSL 命令,以使用您在前一個步驟中建立之私有金鑰來建立自簽憑證。這是互動式命令。請閱讀畫面上的指示,並依照提示操作。將
SelfSignedCA.key
取代為包含私有金鑰之檔案的名稱 (若不同的話)。您可以選擇性地將SelfSignedCA.crt
取代為檔案名稱,以包含您的自簽憑證。openssl req -new -x509 -days 365 -key
SelfSignedCA.key
-outSelfSignedCA.crt
Enter pass phrase for SelfSignedCA.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []:
使用自簽憑證來簽署您的 Web 伺服器 CSR
-
使用以下 OpenSSL 命令來使用私有金鑰和自簽憑證以簽署 CSR。將以下名稱取代為包含對應資料之檔案的名稱 (若不同的話)。
-
IISCertRequest.csr
:包含 Web 伺服器 CSR 之檔案的名稱 -
SelfSignedCA.crt
:包含自簽憑證之檔案的名稱 -
SelfSignedCA.key
:包含私有金鑰之檔案的名稱 -
IISCert.crt
:包含 Web 伺服器已簽署憑證之檔案的名稱
openssl x509 -req -days 365 -in
IISCertRequest.csr
\ -CASelfSignedCA.crt
\ -CAkeySelfSignedCA.key
\ -CAcreateserial \ -outIISCert.crt
Signature ok subject=/ST=IIS-HSM/L=IIS-HSM/OU=IIS-HSM/O=IIS-HSM/CN=IIS-HSM/C=IIS-HSM Getting CA Private Key Enter pass phrase for SelfSignedCA.key:
-
在完成前一個步驟之後,您有一個適用於 Web 伺服器的自簽憑證 (IISCert.crt
) 和自簽憑證 (SelfSignedCA.crt
)。當您具有這些檔案,請移至步驟 3:設定 Web 伺服器。
步驟 3:設定 Web 伺服器
更新您的 IIS網站組態,來使用您在前一個步驟結束時建立的 HTTPS 憑證。這將完成針對 SSL/TLS 卸載搭配 AWS CloudHSM設定您的 Windows Web 伺服器軟體 (IIS)。
如果已使用自簽憑證來簽署 CSR,則您必須先將自簽憑證匯入至 Windows 受信任的根認證授權單位。
將自簽憑證匯入至 Windows 受信任的根認證授權單位
-
如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
將自簽憑證複製到 Windows 伺服器。
-
在 Windows 伺服器上,開啟 Control Panel (控制台)。
-
針對 Search Control Panel (搜尋控制台),輸入
certificates
。然後選擇 Manage computer certificates (管理電腦憑證)。 -
在憑證 - 本機電腦視窗中,按兩下信任的根憑證授權機構。
-
用滑鼠右鍵按一下 Certificates (憑證),然後選擇 All Tasks (所有工作)、Import (匯入)。
-
在 Certificate Import Wizard (憑證匯入精靈) 中,選擇 Next (下一步)。
-
選擇 Browse (瀏覽),然後尋找並選取您的自簽憑證。如果您已遵循本教學課程前一個步驟中的指示來建立自簽憑證,則您的自簽憑證即名為
SelfSignedCA.crt
。選擇 Open (開啟)。 -
選擇 Next (下一步)。
-
對於 Certificate Store (憑證存放區),選擇 Place all certificates in the following store (將所有憑證放入以下存放區)。然後,確保選取 Trusted Root Certification Authorities (受信任的根認證授權單位) 做為 Certificate store(憑證存放區)。
-
選擇 Next (下一步) ,然後選擇 Finish (完成)。
更新 IIS 網站組態
-
如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
啟動 AWS CloudHSM 用戶端協助程式。
-
將 Web 伺服器的已簽署憑證 (這是您在本教學課程前一個步驟結束時建立的憑證) 複製到 Windows 伺服器。
-
在 Windows Server 上,使用 Windows certreq命令
來接受簽署的憑證,如下列範例所示。將 IISCert.crt
取代為包含 Web 伺服器的已簽署憑證之檔案的名稱。C:\>
certreq -accept
IISCert.crt
SDK Version: 2.03
-
在 Windows 伺服器上,啟動 Server Manager (伺服器管理員)。
-
在 Server Manager (伺服器管理員) 儀表板右上角,選擇 Tools (工具)、Internet Information Services (IIS) Manager (Internet Information Services (IIS) 管理員)。
-
在 Internet Information Services (IIS) Manager (Internet Information Services (IIS) 管理員) 視窗中,按兩下您的伺服器名稱。然後按兩下 Sites (網站)。選取網站。
-
選取 SSL Settings (SSL 設定)。然後,在視窗右側選擇 Bindings (繫結)。
-
在 Site Bindings (網站繫結) 視窗中,選擇 Add (新增)。
-
對於 Type (類型),選擇 https (https)。對於 SSL certificate (SSL 憑證),選擇您在本教學課程前一個步驟結束時建立的 HTTPS 憑證。
注意
如果您在此次憑證繫結中遇到錯誤,請重新啟動您的伺服器並重試此步驟。
-
選擇確定。
在更新網站組態之後,請移至步驟 4:啟用 HTTPS 流量並驗證憑證。
步驟 4:啟用 HTTPS 流量並驗證憑證
使用 設定 Web 伺服器進行 SSL/TLS 卸載後 AWS CloudHSM,請將 Web 伺服器執行個體新增至允許傳入 HTTPS 流量的安全群組。這可讓用戶端 (例如 Web 瀏覽器) 與 Web 伺服器建立 HTTPS 連線。然後,建立與 Web 伺服器的 HTTPS 連線,並驗證其是否使用您為 SSL/TLS 卸載設定的憑證 AWS CloudHSM。
啟用傳入 HTTPS 連線
若要從用戶端 (例如 Web 瀏覽器) 連接到 Web 伺服器,請建立允許傳入 HTTPS 連接的安全群組。特別是應該允許連接埠 443 上的傳入 TCP 連線。將此安全群組指派到您的 Web 伺服器。
建立 HTTPS 的安全群組並將其指派至您的 Web 伺服器
-
在 https://console.aws.amazon.com/ec2/
開啟 Amazon 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/
。提示
您可以使用 DNS 服務 (例如 Amazon Route 53),將網站的網域名稱 (例如,https://www.example.com/) 路由到 Web 伺服器。如需詳細資訊,請參閱《Amazon Route 53 開發人員指南》或 DNS 服務文件中的將流量路由到 Amazon EC2 執行個體。
-
使用您的 Web 瀏覽器來檢視 Web 伺服器憑證。如需詳細資訊,請參閱下列內容:
其他 Web 瀏覽器可能有類似的功能,可供您用來檢視 Web 伺服器憑證。
-
確保 SSL/TLS 憑證是您設定 Web 伺服器所要使用的憑證。
使用 OpenSSL s_client 來驗證 SSL/TLS 卸載
-
執行以下 OpenSSL 命令來使用 HTTPS 連接至 Web 伺服器。以 Web 伺服器的公有 DNS 名稱或 IP 地址來取代
<伺服器名稱>
。openssl s_client -connect
<server name>
:443提示
您可以使用 DNS 服務 (例如 Amazon Route 53),將網站的網域名稱 (例如,https://www.example.com/) 路由到 Web 伺服器。如需詳細資訊,請參閱《Amazon Route 53 開發人員指南》或 DNS 服務文件中的將流量路由到 Amazon EC2 執行個體。
-
確保 SSL/TLS 憑證是您設定 Web 伺服器所要使用的憑證。
您現在有透過 HTTPS 而受到保護的網站。Web 伺服器的私有金鑰存放在 AWS CloudHSM 叢集的 HSM 中。
若要新增負載平衡器,請參閱 使用 Elastic Load Balancing 新增負載平衡器 AWS CloudHSM(選用)。