AWS CloudHSM SSL/TLS 在 Windows 上使用 IIS搭配 卸載 CNG - AWS CloudHSM

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS CloudHSM SSL/TLS 在 Windows 上使用 IIS搭配 卸載 CNG

本教學課程提供 step-by-step在 Windows Web 伺服器上使用 AWS CloudHSM 設定SSL/TLS卸載的指示。

概觀

在 Windows 上,Windows Server Web 伺服器應用程式的網際網路資訊服務 (IIS) 原生支援 HTTPS。AWS CloudHSM Microsoft 密碼編譯的金鑰儲存提供者 (KSP)API:新一代 (CNG) 提供允許在叢集HSMs中使用 IIS 進行密碼編譯卸載和金鑰儲存的介面。 AWS CloudHSM KSP 是連接至IIS AWS CloudHSM 叢集的橋接器。

此教學課程會讓您了解如何執行以下操作:

  • 在 Amazon EC2執行個體上安裝 Web 伺服器軟體。

  • 將 Web 伺服器軟體設定為HTTPS使用儲存在 AWS CloudHSM 叢集中的私有金鑰支援 。

  • (選用) 使用 Amazon EC2建立第二個 Web 伺服器執行個體,並使用 Elastic Load Balancing 建立負載平衡器。使用負載平衡器可將負載分散到多部伺服器,進而提升效能。它也可以在一或多個伺服器失敗時提供備援和高可用性。

當您準備好開始時,請移至步驟 1:設定先決條件

步驟 1:設定先決條件

若要使用 設定 Web 伺服器SSL/TLS卸載 AWS CloudHSM,您需要下列項目:

  • 具有至少一個 的作用中 AWS CloudHSM 叢集HSM。

  • 執行已安裝下列軟體之 Windows 作業系統的 Amazon EC2執行個體:

    • Windows 的 AWS CloudHSM 用戶端軟體。

    • Windows Server 的網際網路資訊服務 (IIS)。

  • 在 上擁有和管理 Web 伺服器私有金鑰的加密使用者 (CU)HSM。

注意

本教學課程使用 Microsoft Windows Server 2016。也支援 Microsoft Windows Server 2012,但不支援 Microsoft Windows Server 2012 R2。

在 上設定 Windows Server 執行個體和建立 CU HSM
  1. 完成「開始使用」中的步驟。當您啟動 Amazon EC2用戶端時,請選擇 Windows Server 2016 或 Windows Server 2012AMI。當您完成這些步驟時,您有一個具有至少一個 的作用中叢集HSM。您也有執行 Windows Server 的 Amazon EC2用戶端執行個體,其中已安裝 Windows 用戶端 AWS CloudHSM 軟體。

  2. (選用) HSMs將更多新增至叢集。如需詳細資訊,請參閱將 HSM新增至 AWS CloudHSM 叢集

  3. 連接至 Windows 伺服器。如需詳細資訊,請參閱 Amazon EC2使用者指南 中的連線至您的執行個體

  4. 使用 CloudHSM CLI建立加密使用者 (CU)。保持追蹤 CU 使用者名稱和密碼。您需要它們來完成下一個步驟。

    注意

    如需建立使用者的相關資訊,請參閱使用雲端HSM管理HSM使用者。 CLI

  5. 使用您在上一個步驟中建立的 CU 使用者名稱和密碼,設定 的登入憑證HSM

  6. 在步驟 5 中,如果您使用 Windows Credentials Manager 來設定HSM憑證,psexec.exe請從 下載 SysInternals 以執行下列命令作為 NT Authority:SYSTEM

    psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --username <USERNAME> --password <PASSWORD>

    Replace (取代) <USERNAME> 以及 <PASSWORD> 憑證HSM。

在 Windows Server IIS上安裝
  1. 如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱 Amazon EC2使用者指南 中的連線至您的執行個體

  2. 在 Windows 伺服器上,啟動 Server Manager (伺服器管理員)

  3. Server Manager (伺服器管理員) 儀表板中,選擇 Add roles and features (新增角色和功能)

  4. 閱讀 Before you begin (開始之前) 資訊,然後選擇 Next (下一步)

  5. 對於 Installation Type (安裝類型),選擇 Role-based or feature-based installation (角色型或功能型安裝)。然後選擇下一步

  6. 對於 Server Selection (伺服器選項),選擇 Select a server from the server pool (從伺服器集區選取伺服器)。然後選擇下一步

  7. 對於 Server Roles (伺服器角色),執行下列動作:

    1. 選取 Web 伺服器 (IIS)

    2. 對於新增 Web 伺服器 (IIS) 所需的功能,選擇新增功能

    3. 選擇 Next (下一步) 來完成伺服器角色的選取。

  8. 針對 Features (功能),接受預設。然後選擇下一步

  9. 閱讀 Web Server 角色 (IIS) 資訊。然後選擇下一步

  10. 對於 Select role services (選取角色服務),接受預設值或變更為偏好的設定。然後選擇下一步

  11. 針對 Confirmation (確認),閱讀確認資訊。然後選擇 Install (安裝)

  12. 完成安裝之後,請選擇 Close (關閉)

完成這些步驟之後,請移至 步驟 2:建立憑證簽署請求 (CSR) 和憑證

步驟 2:建立憑證簽署請求 (CSR) 和憑證

若要啟用 HTTPS,您的 Web 伺服器需要使用 SSL/TLS certificate and a corresponding private key. To use SSL/TLS卸載 AWS CloudHSM,您可以將私有金鑰存放在叢集中的 HSM中 AWS CloudHSM 。若要這麼做,您可以使用 AWS CloudHSM Microsoft 密碼編譯的金鑰儲存提供者 (KSP)API:新一代 (CNG) 來建立憑證簽署請求 ()CSR。然後,您將 CSR授予憑證授權機構 (CA),該授權機構會簽署 CSR 以產生憑證。

建立 CSR

使用 Windows Server AWS CloudHSM KSP上的 來建立 CSR。

若要建立 CSR
  1. 如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱 Amazon EC2使用者指南 中的連線至您的執行個體

  2. 使用以下命令啟動 AWS CloudHSM 用戶端常駐程式。

    Amazon Linux
    $ sudo start cloudhsm-client
    Amazon Linux 2
    $ sudo service cloudhsm-client start
    CentOS 7
    $ sudo service cloudhsm-client start
    CentOS 8
    $ sudo service cloudhsm-client start
    RHEL 7
    $ sudo service cloudhsm-client start
    RHEL 8
    $ sudo service cloudhsm-client start
    Ubuntu 16.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 18.04 LTS
    $ sudo service cloudhsm-client start
    Windows
    • 用於 Windows 用戶端 1.1.2+:

      C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient
    • 用於 Windows 用戶端 1.1.1 和更早版本:

      C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg
  3. 在 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
  4. 使用 Windows certreq 命令,CSR從您在上一個步驟中建立IISCertRequest.inf的檔案建立 。下列範例會將 儲存至名為 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。

建立自簽憑證
  1. 使用下列 OpenSSL 命令來建立私有金鑰。您可以選擇性地取代 SelfSignedCA.key 檔案名稱,以包含您的私有金鑰。

    openssl genrsa -aes256 -out SelfSignedCA.key 2048 Generating RSA private key, 2048 bit long modulus ......................................................................+++ .........................................+++ e is 65537 (0x10001) Enter pass phrase for SelfSignedCA.key: Verifying - Enter pass phrase for SelfSignedCA.key:
  2. 使用下列 OpenSSL 命令,使用您在上一個步驟中建立的私有金鑰來建立自我簽署憑證。這是互動式命令。請閱讀畫面上的指示,並依照提示操作。Replace (取代) SelfSignedCA.key 包含私有金鑰的檔案名稱 (如果不同)。您可以選擇性地取代 SelfSignedCA.crt 包含自我簽署憑證的檔案名稱。

    openssl req -new -x509 -days 365 -key SelfSignedCA.key -out SelfSignedCA.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 \ -CA SelfSignedCA.crt \ -CAkey SelfSignedCA.key \ -CAcreateserial \ -out IISCert.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 卸載設定 Windows Web 伺服器軟體 (IIS) AWS CloudHSM。

如果您使用自我簽署憑證來簽署 CSR,您必須先將自我簽署憑證匯入 Windows Trusted Root Certification Authority。

將自簽憑證匯入至 Windows 受信任的根認證授權單位
  1. 如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱 Amazon EC2使用者指南 中的連線至您的執行個體

  2. 將自簽憑證複製到 Windows 伺服器。

  3. 在 Windows 伺服器上,開啟 Control Panel (控制台)

  4. 針對 Search Control Panel (搜尋控制台),輸入 certificates。然後選擇 Manage computer certificates (管理電腦憑證)

  5. Certificates - Local Computer (憑證 - 本機電腦) 視窗中,按兩下 Trusted Root Certification Authorities (受信任的根認證授權單位)

  6. 用滑鼠右鍵按一下 Certificates (憑證),然後選擇 All Tasks (所有工作)Import (匯入)

  7. Certificate Import Wizard (憑證匯入精靈) 中,選擇 Next (下一步)

  8. 選擇 Browse (瀏覽),然後尋找並選取您的自簽憑證。如果您已遵循本教學課程前一個步驟中的指示來建立自簽憑證,則您的自簽憑證即名為 SelfSignedCA.crt。選擇 Open (開啟)。

  9. 選擇 Next (下一步)

  10. 對於 Certificate Store (憑證存放區),選擇 Place all certificates in the following store (將所有憑證放入以下存放區)。然後,確保選取 Trusted Root Certification Authorities (受信任的根認證授權單位) 做為 Certificate store(憑證存放區)

  11. 選擇 Next (下一步) ,然後選擇 Finish (完成)

更新IIS網站的組態
  1. 如果您尚未這麼做,請連接至您的 Windows 伺服器。如需詳細資訊,請參閱 Amazon EC2使用者指南 中的連線至您的執行個體

  2. 啟動 AWS CloudHSM 用戶端常駐程式。

  3. 將 Web 伺服器的已簽署憑證 (這是您在本教學課程前一個步驟結束時建立的憑證) 複製到 Windows 伺服器。

  4. 在您的 Windows 伺服器上,使用 Windows certreq 命令,來接受已簽署的憑證,如以下範例所示。Replace (取代) IISCert.crt 包含 Web 伺服器簽署憑證的檔案名稱。

    C:\>certreq -accept IISCert.crt SDK Version: 2.03
  5. 在 Windows 伺服器上,啟動 Server Manager (伺服器管理員)

  6. Server Manager 儀表板的右上角,選擇工具 網際網路資訊服務 (IIS) Manager

  7. 網際網路資訊服務 (IIS) Manager 視窗中,按兩下您的伺服器名稱。然後按兩下 Sites (網站)。選取網站。

  8. 選取SSL設定 。然後,在視窗右側選擇 Bindings (繫結)

  9. Site Bindings (網站繫結) 視窗中,選擇 Add (新增)

  10. 對於 Type (類型),選擇 https (https)。針對SSL憑證 ,選擇您在本教學課程的上一個步驟 結束時建立的HTTPS憑證。

    注意

    如果您在此次憑證繫結中遇到錯誤,請重新啟動您的伺服器並重試此步驟。

  11. 選擇確定

在更新網站組態之後,請移至步驟 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 伺服器
  1. 在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中選擇安全群組

  3. 選擇建立安全群組

  4. 對於 Create Security Group (建立安全群組),執行下列動作:

    1. 對於 Security group name (安全群組名稱),輸入您要建立之安全群組的名稱。

    2. (選用) 輸入您要建立之安全群組的描述。

    3. 針對 VPC,選擇包含 Web 伺服器 Amazon EC2執行個體VPC的 。

    4. 選取 Add Rule (新增規則)

    5. 對於類型 HTTPS請從下拉式清單中選取 。

    6. 對於來源,輸入來源位置。

    7. 選擇建立安全群組

  5. 在導覽窗格中,選擇 Instances (執行個體)。

  6. 選取 Web 伺服器執行個體旁的核取方塊。

  7. 選取頁面頂端的動作下拉式選單。選取安全性,然後選取變更安全群組

  8. 針對相關聯的安全群組 ,選取搜尋方塊,然後選擇您為 建立的安全群組HTTPS。然後選擇新增安全群組

  9. 選取 Save (儲存)。

驗證 是否HTTPS使用您設定的憑證

將 Web 伺服器新增至安全群組後,您可以驗證 SSL/TLS 卸載是否使用自我簽署憑證。您可以使用 Web 瀏覽器或使用 OpenSSL s_client 等工具來執行此操作。

使用 Web 瀏覽器驗證SSL/TLS卸載
  1. 使用 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

  2. 使用您的 Web 瀏覽器來檢視 Web 伺服器憑證。如需詳細資訊,請參閱下列內容:

    • 若為 Mozilla Firefox,請參閱 Mozilla 技術支援網站上的檢視憑證

    • 若為 Google Chrome,請參閱 Google Web 開發人員工具網站上的了解安全問題

    其他 Web 瀏覽器可能有類似的功能,可供您用來檢視 Web 伺服器憑證。

  3. 確定 SSL/TLS 憑證是您設定 Web 伺服器使用的憑證。

使用 OpenSSL s_client 驗證SSL/TLS卸載
  1. 執行下列 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

  2. 確定 SSL/TLS 憑證是您設定 Web 伺服器使用的憑證。

您現在有一個使用 保護的網站HTTPS。Web 伺服器的私有金鑰會儲存在 AWS CloudHSM 叢集HSM中的 中。

若要新增負載平衡器,請參閱 使用 Elastic Load Balancing 新增負載平衡器 AWS CloudHSM(選用)