

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

# AWS CloudHSM Linux 上使用 NGINX 或 HAProxy 搭配 OpenSSL 提供者的 SSL/TLS 卸載
<a name="third-offload-linux-openssl-provider"></a>

本主題提供step-by-step說明。 AWS CloudHSM HAProxy OpenSSL 

**Topics**
+ [概觀](#ssl-offload-linux-openssl-provider-overview)
+ [步驟 1：設定先決條件](#ssl-offload-provider-prerequisites)
+ [步驟 2：產生或匯入私有金鑰並取得憑證](#ssl-offload-provider-generate-key-and-certificate)
+ [步驟 3：設定 Web 伺服器](#ssl-offload-provider-configure-web-server)
+ [步驟 4：啟用 HTTPS 流量並驗證憑證](#ssl-offload-enable-traffic-and-verify-certificate-provider)

## 概觀
<a name="ssl-offload-linux-openssl-provider-overview"></a>

在 Linux 上，[NGINX](https://nginx.org/en/) 和 [HAProxy](https://www.haproxy.org/) Web 伺服器軟體與 [OpenSSL](https://www.openssl.org/) 整合以支援 HTTPS。[AWS CloudHSM OpenSSL 提供者](openssl-provider-library.md)提供的界面可讓 Web 伺服器軟體使用叢集中的 HSMs 進行密碼編譯卸載和金鑰儲存。OpenSSL 提供者是將 Web 伺服器連接到 AWS CloudHSM 叢集的橋接器。

若要完成本教學課程，您將設定 NGINX 或 HAProxy 使用 AWS CloudHSM OpenSSL 提供者。本教學課程說明如何執行下列動作：
+ 在 Amazon EC2 執行個體上安裝 Web 伺服器軟體。
+ 將 Web 伺服器軟體設定為使用儲存在 AWS CloudHSM 叢集中的私有金鑰來支援 HTTPS。
+ (選用) 使用 Amazon EC2 建立第二個 Web 伺服器執行個體，并使用 Elastic Load Balancing 建立負載平衡器。使用負載平衡器可將負載分散到多部伺服器，進而提升效能。它也可以在一或多個伺服器失敗時提供備援和高可用性。

當您準備好開始時，請移至[步驟 1：設定先決條件](#ssl-offload-provider-prerequisites)。

## 步驟 1：設定先決條件
<a name="ssl-offload-provider-prerequisites"></a>

不同平台需要不同的先決條件。請使用下方符合您平台的先決條件區段。

### AWS CloudHSM OpenSSL 提供者的先決條件
<a name="provider-new-versions"></a>

若要使用適用於用戶端 SDK 5 的 AWS CloudHSM OpenSSL 提供者設定 Web 伺服器 SSL/TLS 伺服器身分卸載，您需要下列項目：
+ 具有至少兩個硬體安全模組 (HSM) 的作用中 AWS CloudHSM 叢集
**注意**  
您可以使用單一 HSM 叢集，但必須先停用用戶端金鑰耐久性。如需詳細資訊，請參閱[管理用戶端金鑰耐久性設定](working-client-sync.md#client-sync-sdk8)和[用戶端 SDK 5 設定工具](configure-sdk-5.md)。
+ 執行 Linux 作業系統的 Amazon EC2 執行個體，其中已安裝下列軟體：
  + Web 伺服器 (NGINX 或 HAProxy)
  + 用戶端 SDK 5 的 AWS CloudHSM OpenSSL 提供者
+ [加密使用者](understanding-users.md#crypto-user-chsm-cli) (CU)，擁有及管理 HSM 上 Web 伺服器的私有金鑰。

**設定 Linux Web 伺服器執行個體，並在 HSM 上建立 CU**
**注意**  
此程序中的許多命令都需要更高的權限。視您的系統組態而定，您可能需要使用 `sudo`或 做為根使用者來執行命令。

1. 安裝和設定適用於用戶端 SDK 5 的 AWS CloudHSM OpenSSL 提供者。如需安裝 OpenSSL 提供者的詳細資訊，請參閱適用於[AWS CloudHSM 用戶端 SDK 5 的 OpenSSL 提供者](openssl-provider-install.md)。

1. 在可存取叢集的 EC2 Linux 執行個體上，安裝 NGINX 或 HAProxy Web 伺服器：

------
#### [ Amazon Linux 2023 ]
   + NGINX

     ```
     $ yum install nginx
     ```
   + HAProxy

     ```
     $ yum install haproxy
     ```

------
#### [ RHEL 9 (9.2\+) ]
   + NGINX

     ```
     $ yum install nginx
     ```
   + HAProxy

     ```
     $ yum install haproxy
     ```

------
#### [ RHEL 10 (10.0\+) ]
   + NGINX

     ```
     $ yum install nginx
     ```
   + HAProxy

     ```
     $ yum install haproxy
     ```

------
#### [ Ubuntu 24.04 ]
   + NGINX

     ```
     $ apt install nginx
     ```
   + HAProxy

     ```
     $ apt install haproxy
     ```

------

1. 使用 CloudHSM CLI 建立[加密使用者](understanding-users.md#crypto-user-chsm-cli)。如需關於管理 HSM 使用者的詳細資訊，請參閱[使用 CloudHSM CLI 管理 HSM 使用者](manage-hsm-users-chsm-cli.md)。
**提示**  
保持追蹤 CU 使用者名稱和密碼。之後在為您的 Web 伺服器產生或匯入 HTTPS 私有金鑰和憑證時，您將會需要該資訊。

完成這些步驟之後，請移至 [步驟 2：產生或匯入私有金鑰並取得憑證](#ssl-offload-provider-generate-key-and-certificate)。

#### 備註
<a name="note-ssl5-provider-pre"></a>
+ 若要使用 Security-Enhanced Linux (SELinux) 和 Web 伺服器，您必須在連接埠 2223 上允許傳出 TCP 連線，也就是用戶端 SDK 5 用來與 HSM 通訊的連接埠。
+ 若要建立和啟用叢集並授予 EC2 執行個體存取叢集的權限，請完成[AWS CloudHSM入門](getting-started.md)中的步驟。入門提供使用 HSM 和 Amazon EC2 用戶端執行個體建立作用中叢集的逐步說明。可以使用此用戶端執行個體做為 Web 伺服器。
+ 若要避免停用用戶端金鑰耐久性，請在叢集中新增多個 HSM。如需詳細資訊，請參閱[將 HSM 新增至 AWS CloudHSM 叢集](add-hsm.md)。
+ 要連接到用戶端執行個體，可以使用 SSH 或 PuTTY。如需詳細資訊，請參閱 Amazon EC2 文件中的[使用 SSH 連接至您的 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)或[使用 PuTTY 從 Windows 連接至您的 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)。

## 步驟 2：產生或匯入私有金鑰並取得憑證
<a name="ssl-offload-provider-generate-key-and-certificate"></a>

若要啟用 HTTPS，您的 Web 伺服器應用程式 (NGINX 或 HAProxy) 需要私有金鑰和對應的 SSL/TLS 憑證。若要搭配 使用 Web 伺服器 SSL/TLS 伺服器身分卸載 AWS CloudHSM，您必須將私有金鑰存放在 AWS CloudHSM 叢集的 HSM 中。您會先產生私有金鑰，並使用金鑰來建立憑證簽署請求 (CSR)。然後，您從 HSM 匯出*仿造 PEM 私有金鑰*，這是 PEM 格式的私有金鑰檔案，其中包含 HSM 上存放之私有金鑰的參考 （這不是實際的私有金鑰）。在 SSL/TLS 伺服器身分卸載期間，您的 Web 伺服器會使用仿造 PEM 私有金鑰檔案來識別 HSM 上的私有金鑰。

### 產生私有金鑰
<a name="ssl-offload-provider-generate-private-key"></a>

本節說明如何使用 [CloudHSM CLI ](cloudhsm_cli.md)產生金鑰對。在 HSM 內產生金鑰對後，您可以將它匯出為仿造 PEM 檔案，並產生對應的憑證。<a name="ssl-offload-provider-generate-private-key-prerequisites"></a>

**安裝和設定 CloudHSM CLI**

1. [安裝和設定](cloudhsm_cli-getting-started.md) CloudHSM CLI。

1. 使用以下命令啟動 CloudHSM CLI。

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

1. 執行以下命令來登入 HSM。將 {{<user name>}} 取代為您的 crypto-user 的使用者名稱

   ```
   aws-cloudhsm>login --username {{<user name>}} --role crypto-user
   ```

**產生私有金鑰**

根據您的使用案例，您可以產生 RSA 或 EC 金鑰對。執行以下任意一項：
+ 在 HSM 上產生 RSA 私有金鑰

  使用 [`key generate-asymmetric-pair rsa`](cloudhsm_cli-key-generate-asymmetric-pair-rsa.md) 命令來產生 RSA 金鑰對。此範例會產生一個 RSA 金鑰對，其模數為 2048、公有指數為 65537、公有金鑰標籤為 {{tls\_rsa\_pub}}，以及私有金鑰標籤為 {{tls\_rsa\_private}}。

  ```
  aws-cloudhsm > key generate-asymmetric-pair rsa \
  --public-exponent 65537 \
  --modulus-size-bits 2048 \
  --public-label tls_rsa_pub \
  --private-label tls_rsa_private \
  --private-attributes sign=true
  {
    "error_code": 0,
    "data": {
      "public_key": {
        "key-reference": "0x0000000000280cc8",
        "key-info": {
          "key-owners": [
            {
              "username": "cu1",
              "key-coverage": "full"
            }
          ],
          "shared-users": [],
          "cluster-coverage": "full"
        },
        "attributes": {
          "key-type": "rsa",
          "label": "tls_rsa_pub",
          "id": "",
          "check-value": "0x01fe6e",
          "class": "public-key",
          "encrypt": true,
          "decrypt": false,
          "token": true,
          "always-sensitive": false,
          "derive": false,
          "destroyable": true,
          "extractable": true,
          "local": true,
          "modifiable": true,
          "never-extractable": false,
          "private": true,
          "sensitive": false,
          "sign": false,
          "trusted": false,
          "unwrap": false,
          "verify": false,
          "wrap": false,
          "wrap-with-trusted": false,
          "key-length-bytes": 512,
          "public-exponent": "0x010001",
          "modulus": "0xb1d27e857a876f4e9fd5de748a763c539b359f937eb4b4260e30d1435485a732c878cdad9c72538e2215351b1d41358c9bf80b599c73a80fdb457aa7b20cd61e486c326e2cfd5e124a7f6a996437437812b542e3caf85928aa866f0298580f7967ee6aa01440297d7308fdd9b76b70d1b67f12634df6e6296d6c116d5744c6d60d14d3bf3cb978fe6b75ac67b7089bafd50d8687213b31abc7dc1bad422780d29c851d5102b56f932551eaf52a9591fd8c43d81ecc133022653225bd129f8491101725e9ea33e1ded83fb57af35f847e532eb30cd7e726f23910d2671c6364092e834697ec3cef72cc23615a1ba7c5e100156ae0acac3160f0ca9725d38318b7",
          "modulus-size-bits": 2048
        }
      },
      "private_key": {
        "key-reference": "0x0000000000280cc7",
        "key-info": {
          "key-owners": [
            {
              "username": "cu1",
              "key-coverage": "full"
            }
          ],
          "shared-users": [],
          "cluster-coverage": "full"
        },
        "attributes": {
          "key-type": "rsa",
          "label": "tls_rsa_private",
          "id": "",
          "check-value": "0x01fe6e",
          "class": "private-key",
          "encrypt": false,
          "decrypt": true,
          "token": true,
          "always-sensitive": true,
          "derive": false,
          "destroyable": true,
          "extractable": true,
          "local": true,
          "modifiable": true,
          "never-extractable": false,
          "private": true,
          "sensitive": true,
          "sign": true,
          "trusted": false,
          "unwrap": false,
          "verify": false,
          "wrap": false,
          "wrap-with-trusted": false,
          "key-length-bytes": 1217,
          "public-exponent": "0x010001",
          "modulus": "0xb1d27e857a876f4e9fd5de748a763c539b359f937eb4b4260e30d1435485a732c878cdad9c72538e2215351b1d41358c9bf80b599c73a80fdb457aa7b20cd61e486c326e2cfd5e124a7f6a996437437812b542e3caf85928aa866f0298580f7967ee6aa01440297d7308fdd9b76b70d1b67f12634df6e6296d6c116d5744c6d60d14d3bf3cb978fe6b75ac67b7089bafd50d8687213b31abc7dc1bad422780d29c851d5102b56f932551eaf52a9591fd8c43d81ecc133022653225bd129f8491101725e9ea33e1ded83fb57af35f847e532eb30cd7e726f23910d2671c6364092e834697ec3cef72cc23615a1ba7c5e100156ae0acac3160f0ca9725d38318b7",
          "modulus-size-bits": 2048
        }
      }
    }
  }
  ```
+ 在 HSM 上產生 EC 私有金鑰

  使用 [`key generate-asymmetric-pair ec`](cloudhsm_cli-key-generate-asymmetric-pair-ec.md) 命令來產生 EC 金鑰對。此範例會產生 EC 金鑰對與`prime256v1`曲線 （對應至`NID_X9_62_prime256v1`曲線）、{{tls\_ec\_pub}} 的公有金鑰標籤，以及 {{tls\_ec\_private}} 的私有金鑰標籤。

  ```
  aws-cloudhsm > key generate-asymmetric-pair ec \
      --curve prime256v1 \
      --public-label tls_ec_pub \
      --private-label tls_ec_private \
      --private-attributes sign=true
  {
    "error_code": 0,
    "data": {
      "public_key": {
        "key-reference": "0x000000000012000b",
        "key-info": {
          "key-owners": [
            {
              "username": "cu1",
              "key-coverage": "full"
            }
          ],
          "shared-users": [],
          "cluster-coverage": "session"
        },
        "attributes": {
          "key-type": "ec",
          "label": "tls_ec_pub",
          "id": "",
          "check-value": "0xd7c1a7",
          "class": "public-key",
          "encrypt": false,
          "decrypt": false,
          "token": false,
          "always-sensitive": false,
          "derive": false,
          "destroyable": true,
          "extractable": true,
          "local": true,
          "modifiable": true,
          "never-extractable": false,
          "private": true,
          "sensitive": false,
          "sign": false,
          "trusted": false,
          "unwrap": false,
          "verify": false,
          "wrap": false,
          "wrap-with-trusted": false,
          "key-length-bytes": 57,
          "ec-point": "0x047096513df542250a6b228fd9cb67fd0c903abc93488467681974d6f371083fce1d79da8ad1e9ede745fb9f38ac8622a1b3ebe9270556000c",
          "curve": "secp224r1"
        }
      },
  "private_key": {
        "key-reference": "0x000000000012000c",
        "key-info": {
          "key-owners": [
            {
              "username": "cu1",
              "key-coverage": "full"
            }
          ],
          "shared-users": [],
          "cluster-coverage": "session"
        },
        "attributes": {
          "key-type": "ec",
          "label": "tls_ec_private",
          "id": "",
          "check-value": "0xd7c1a7",
          "class": "private-key",
          "encrypt": false,
          "decrypt": false,
          "token": false,
          "always-sensitive": true,
          "derive": false,
          "destroyable": true,
          "extractable": true,
          "local": true,
          "modifiable": true,
          "never-extractable": false,
          "private": true,
          "sensitive": true,
          "sign": true,
          "trusted": false,
          "unwrap": false,
          "verify": false,
          "wrap": false,
          "wrap-with-trusted": false,
          "key-length-bytes": 122,
          "ec-point": "0x047096513df542250a6b228fd9cb67fd0c903abc93488467681974d6f371083fce1d79da8ad1e9ede745fb9f38ac8622a1b3ebe9270556000c",
          "curve": "secp224r1"
        }
      }
    }
  }
  ```

**匯出仿造的 PEM 私有金鑰檔案**

HSM 上擁有私有金鑰後，您必須匯出仿造的 PEM 私有金鑰檔案。此檔案不包含實際的金鑰資料，但可讓 OpenSSL 動態引擎識別 HSM 上的私有金鑰。接著，您可以使用私有金鑰來建立憑證簽署要求 (CSR)，簽署 CSR 來建立憑證。

使用 [`key generate-file`](cloudhsm_cli-key-generate-file.md)命令以仿造 PEM 格式匯出私有金鑰，並將其儲存至 檔案。以您自己的值取代下列值。
+ {{<private\_key\_label>}} – 您在上一個步驟中產生的私有金鑰標籤。
+ {{<web\_server\_fake\_pem.key>}} – 將寫入您仿造 PEM 金鑰的檔案名稱。

```
aws-cloudhsm > key generate-file --encoding reference-pem --path {{<web_server_fake_pem.key>}} --filter attr.label={{<private_key_label>}}
{
  "error_code": 0,
  "data": {
    "message": "Successfully generated key file"
  }
}
```

**結束 CloudHSM CLI**

執行下列命令來停止 CloudHSM CLI。

```
aws-cloudhsm > quit
```

您現在應該在系統上有一個新檔案，位於上述命令中 {{<web\_server\_fake\_pem.key>}} 指定的路徑。此檔案是仿造的 PEM 私有金鑰檔案。

### 產生自簽憑證
<a name="ssl-offload-provider-generate-certificate"></a>

產生仿造的 PEM 私有金鑰後，您可以使用此檔案來產生憑證簽署要求 (CSR) 和憑證。

在生產環境中，您通常會使用憑證授權單位 (CA) 從 CSR 建立憑證。測試環境不需要 CA。如果您確實使用 CA，請將 CSR 檔案發送給他們，並使用他們在 Web 伺服器中為您提供 HTTPS 的簽名 SSL/TLS 憑證。

除了使用 CA 之外，您也可以使用 AWS CloudHSM OpenSSL 動態引擎來建立自我簽署憑證。自簽憑證不受瀏覽器所信任，請勿用於生產環境。可以用於測試環境。

**警告**  
自簽憑證應該只用於測試環境。若為生產環境，請使用更安全的方法 (例如憑證授權單位) 來建立憑證。<a name="ssl-offload-provider-generate-certificate-prerequisites"></a>

**安裝和設定 OpenSSL 動態引擎**

1. 連接至您的用戶端執行個體。

1. [安裝適用於 AWS CloudHSM 用戶端 SDK 5 的 OpenSSL 動態引擎](openssl5-install.md)<a name="ssl-offload-provider-generate-certificate-steps"></a>

**產生憑證**

1. 取得先前步驟中產生的仿造的 PEM 檔案副本。

1. 建立 CSR

   執行下列命令，使用 AWS CloudHSM OpenSSL 動態引擎來建立憑證簽署請求 (CSR)。以包含您仿造 PEM 私有金鑰的檔案名稱取代 {{<web\_server\_fake\_pem.key>}}。以包含 CSR 的檔案名稱取代 {{<web\_server.csr>}}。

   `req` 是互動式命令。回應每個欄位。欄位資訊會複製到您的 SSL/TLS 憑證。
**注意**  
OpenSSL 提供者目前不支援建立 CSR。您必須使用 OpenSSL 引擎進行此步驟，但 TLS 密碼操作將與提供者搭配使用。

   ```
   $ openssl req -engine cloudhsm -new -key {{<web_server_fake_pem.key>}} -out {{<web_server.csr>}}
   ```

1. 建立自簽憑證

   執行下列命令，以使用 AWS CloudHSM OpenSSL 動態引擎在 HSM 上使用私有金鑰簽署 CSR。這會建立自簽憑證。在命令中，以您自己的值取代下列值。
   + {{<web\_server.csr>}}：包含 CSR 的檔案名稱。
   + {{<web\_server\_fake\_pem.key>}} – 包含仿造 PEM 私有金鑰的檔案名稱。
   + {{<web\_server.crt>}}：包含 Web 伺服器憑證的檔案名稱。

   ```
   $ openssl x509 -engine cloudhsm -req -days 365 -in {{<web_server.csr>}} -signkey {{<web_server_fake_pem.key>}} -out {{<web_server.crt>}}
   ```

在您擁有私有金鑰和憑證之後，請前往 [步驟 3：設定 Web 伺服器](#ssl-offload-provider-configure-web-server)。

## 步驟 3：設定 Web 伺服器
<a name="ssl-offload-provider-configure-web-server"></a>

更新 Web 伺服器軟體組態，以使用 HTTPS 憑證以及您在[ 上一個步驟](#ssl-offload-provider-generate-key-and-certificate)中建立的對應仿造 PEM 私有金鑰。請記得在開始之前備份現有的憑證和金鑰。這將完成設定 Linux Web 伺服器軟體以進行 SSL/TLS 伺服器身分卸載 AWS CloudHSM。

完成以下其中一個區段中的步驟。

**Topics**
+ [設定 NGINX Web 伺服器](#ssl-offload-provider-configure-nginx)
+ [設定 HAProxy Web 伺服器](#ssl-offload-provider-configure-haproxy)

### 設定 NGINX Web 伺服器
<a name="ssl-offload-provider-configure-nginx"></a>

使用本節以 OpenSSL 提供者設定 NGINX。<a name="configure-nginx-provider"></a>

**為 OpenSSL 提供者設定 NGINX**

1. 連接至您的用戶端執行個體。

1. 執行以下命令，為 Web 伺服器憑證和仿造 PEM 私有金鑰建立所需的目錄。

   ```
   $ mkdir -p /etc/pki/nginx/private
   ```

1. 執行以下命令，將您的 Web 伺服器憑證複製到所需的位置。以 Web 伺服器憑證的名稱取代 {{<web\_server.crt>}}。

   ```
   $ cp {{<web_server.crt>}} /etc/pki/nginx/server.crt
   ```

1. 執行以下命令，將您的仿造 PEM 私有金鑰複製到所需的位置。以包含您仿造 PEM 私有金鑰的檔案名稱取代 {{<web\_server\_fake\_pem.key>。}}

   ```
   $ cp {{<web_server_fake_pem.key>}} /etc/pki/nginx/private/server.key
   ```

1. 執行以下命令來變更檔案的擁有權，使得名為 *nginx* 的使用者可讀取這些檔案。

   ```
   $ chown nginx /etc/pki/nginx/server.crt /etc/pki/nginx/private/server.key
   ```

1. 設定 OpenSSL 以使用 AWS CloudHSM 提供者。如需設定 OpenSSL 提供者的詳細資訊，請參閱適用於[AWS CloudHSM 用戶端 SDK 5 的 OpenSSL 提供者](openssl-provider-install.md)。

   1. 找到您的 OpenSSL 組態檔案：

      ```
      $ openssl version -d
      ```

      您應該會看到類似以下的輸出：

      ```
      OPENSSLDIR: "/etc/pki/tls"
      ```

      組態檔案`openssl.cnf`位於此目錄中。

   1. 
**注意**  
請勿直接修改系統的預設 openssl.cnf 檔案。這可防止整個系統的 OpenSSL 操作 (SSH、TLS 連線和其他服務） 意外地透過 CloudHSM 供應商路由。  
使用單獨的組態檔案可讓您將 CloudHSM 提供者用量範圍限定為僅需要 HSM 支援密碼編譯操作的特定應用程式。

      使用下列內容建立新的 OpenSSL 組態檔案：

      ```
      $ cat > {{<example-cloudhsm-openssl.cnf>}} << 'EOF'
      ## NOTE: This should point to the system default openssl config file.
      # Replace /etc/pki/tls with the path to your OpenSSL configuration directory
      .include {{</etc/pki/tls>}}/openssl.cnf
      
      # Override the existing provider_section to include AWS CloudHSM OpenSSL Provider as a 3rd party OpenSSL provider
      [provider_sect]
      default = default_sect
      # Include AWS CloudHSM CloudHSM OpenSSL provider
      cloudhsm = cloudhsm_sect
      
      [default_sect]
      activate = 1
      
      [cloudhsm_sect]
      activate = 1
      EOF
      ```

   1. 請確定使用加密使用者 (CU) 登入資料設定`CLOUDHSM_PIN`環境變數：

      ```
      $ export CLOUDHSM_PIN={{<username>}}:{{<password>}}
      ```

   1. 設定`OPENSSL_CONF`環境變數以指向更新後的組態檔案，並確認已載入提供者：

      ```
      $ OPENSSL_CONF=/path/to/example-cloudhsm-openssl.cnf openssl list -providers
      ```

      您應該會同時看到預設提供者和列出的 CloudHSM 提供者：

      ```
      OPENSSL_CONF=/path/to/example-cloudhsm-openssl.cnf openssl list -providers
      Providers:
        default
          name: OpenSSL Default Provider
          version: 3.2.2
          status: active
        cloudhsm
          name: AWS CloudHSM OpenSSL Provider
          version: 5.17.0
          status: active
      ```

1. 執行以下命令來備份 `/etc/nginx/nginx.conf` 檔案。

   ```
   $ cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
   ```

1. 更新 NGINX 組態。
**注意**  
每個叢集可以在所有 NGINX Web 伺服器上支持最多 1000 個 NGINX 工作者程序。

------
#### [ Amazon Linux 2023 ]

   使用文字編輯器來編輯 `/etc/nginx/nginx.conf` 檔案。這可能需要 Linux 根許可。在檔案上方，新增下列行：

   ```
   env CLOUDHSM_PIN;
   env OPENSSL_CONF;
   ```

   然後將以下內容新增至檔案的 TLS 區段：

   ```
   # Settings for a TLS enabled server.
   server {
       listen       443 ssl http2 default_server;
       listen       [::]:443 ssl http2 default_server;
       server_name  _;
       root         /usr/share/nginx/html;
   
       ssl_certificate "/etc/pki/nginx/server.crt";
       ssl_certificate_key "/etc/pki/nginx/private/server.key";
       # It is *strongly* recommended to generate unique DH parameters for DHE ciphers
       # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048
       # ssl_dhparam "/etc/pki/nginx/dhparams.pem";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256";
       ssl_prefer_server_ciphers off;
   
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
   
       location / {
       }
   
       error_page 404 /404.html;
       location = /40x.html {
       }
   
       error_page 500 502 503 504 /50x.html;
       location = /50x.html {
       }
   }
   ```

------
#### [ RHEL 9 (9.2\+) ]

   使用文字編輯器來編輯 `/etc/nginx/nginx.conf` 檔案。這可能需要 Linux 根許可。在檔案上方，新增下列行：

   ```
   env CLOUDHSM_PIN;
   env OPENSSL_CONF;
   ```

   然後將以下內容新增至檔案的 TLS 區段：

   ```
   # Settings for a TLS enabled server.
   server {
       listen       443 ssl http2 default_server;
       listen       [::]:443 ssl http2 default_server;
       server_name  _;
       root         /usr/share/nginx/html;
   
       ssl_certificate "/etc/pki/nginx/server.crt";
       ssl_certificate_key "/etc/pki/nginx/private/server.key";
       # It is *strongly* recommended to generate unique DH parameters for DHE ciphers
       # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048
       # ssl_dhparam "/etc/pki/nginx/dhparams.pem";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256";
       ssl_prefer_server_ciphers off;
   
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
   
       location / {
       }
   
       error_page 404 /404.html;
       location = /40x.html {
       }
   
       error_page 500 502 503 504 /50x.html;
       location = /50x.html {
       }
   }
   ```

------
#### [ RHEL 10 (10.0\+) ]

   使用文字編輯器來編輯 `/etc/nginx/nginx.conf` 檔案。這可能需要 Linux 根許可。在檔案上方，新增下列行：

   ```
   env CLOUDHSM_PIN;
   env OPENSSL_CONF;
   ```

   然後將以下內容新增至檔案的 TLS 區段：

   ```
   # Settings for a TLS enabled server.
   server {
       listen       443 ssl http2 default_server;
       listen       [::]:443 ssl http2 default_server;
       server_name  _;
       root         /usr/share/nginx/html;
   
       ssl_certificate "/etc/pki/nginx/server.crt";
       ssl_certificate_key "/etc/pki/nginx/private/server.key";
       # It is *strongly* recommended to generate unique DH parameters for DHE ciphers
       # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048
       # ssl_dhparam "/etc/pki/nginx/dhparams.pem";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256";
       ssl_prefer_server_ciphers off;
   
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
   
       location / {
       }
   
       error_page 404 /404.html;
       location = /40x.html {
       }
   
       error_page 500 502 503 504 /50x.html;
       location = /50x.html {
       }
   }
   ```

------
#### [ Ubuntu 24.04 ]

   使用文字編輯器來編輯 `/etc/nginx/nginx.conf` 檔案。這可能需要 Linux 根許可。在檔案上方，新增下列行：

   ```
   env CLOUDHSM_PIN;
   env OPENSSL_CONF;
   ```

   然後將以下內容新增至檔案的 TLS 區段：

   ```
   # Settings for a TLS enabled server.
   server {
       listen       443 ssl http2 default_server;
       listen       [::]:443 ssl http2 default_server;
       server_name  _;
       root         /var/www/html;
   
       ssl_certificate "/etc/ssl/certs/server.crt";
       ssl_certificate_key "/etc/ssl/private/server.key";
       # It is *strongly* recommended to generate unique DH parameters for DHE ciphers
       # Generate them with: openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048
       # ssl_dhparam "/etc/ssl/certs/dhparams.pem";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256";
       ssl_prefer_server_ciphers off;
   
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
   
       location / {
       }
   
       error_page 404 /404.html;
       location = /40x.html {
       }
   
       error_page 500 502 503 504 /50x.html;
       location = /50x.html {
       }
   }
   ```

------

   儲存檔案。

1. 備份 `systemd` 組態檔案，然後設定 `EnvironmentFile` 路徑。

------
#### [ Amazon Linux 2023 ]

   1. 備份 `nginx.service` 檔案：

      ```
      $ cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
      ```

   1. 在文字編輯器中開啟 `/lib/systemd/system/nginx.service`。在 【服務】 區段下，新增：

      ```
      EnvironmentFile=/etc/sysconfig/nginx
      ```

------
#### [ RHEL 9 (9.2\+) ]

   1. 備份 `nginx.service` 檔案：

      ```
      $ cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
      ```

   1. 在文字編輯器中開啟 `/lib/systemd/system/nginx.service`。在 【服務】 區段下，新增：

      ```
      EnvironmentFile=/etc/sysconfig/nginx
      ```

------
#### [ RHEL 10 (10.0\+) ]

   1. 備份 `nginx.service` 檔案：

      ```
      $ cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
      ```

   1. 在文字編輯器中開啟 `/lib/systemd/system/nginx.service`。在 【服務】 區段下，新增：

      ```
      EnvironmentFile=/etc/sysconfig/nginx
      ```

------
#### [ Ubuntu 24.04 ]

   1. 備份 `nginx.service` 檔案：

      ```
      $ cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
      ```

   1. 在文字編輯器中開啟 `/lib/systemd/system/nginx.service`。在 【服務】 區段下，新增：

      ```
      EnvironmentFile=/etc/sysconfig/nginx
      ```

------

1.  檢查 `/etc/sysconfig/nginx` 檔案是否存在，然後執行以下其中一項：
   + 如果檔案存在，請執行下列命令來備份檔案：

     ```
     $ cp /etc/sysconfig/nginx /etc/sysconfig/nginx.backup
     ```
   +  如果檔案不存在，請開啟文字編輯器，然後建立在 `/etc/sysconfig/` 資料夾中建立名為 `nginx` 的檔案。

1. 設定 NGINX 環境。

------
#### [ Amazon Linux 2023 ]

   身為 Linux 根使用者，請在文字編輯器中開啟 `/etc/sysconfig/nginx` 檔案。例如 

   ```
   vi /etc/sysconfig/nginx
   ```

   新增密碼編譯使用者 (CU) 登入資料和 OpenSSL 組態檔案的路徑：

   ```
   CLOUDHSM_PIN={{<CU user name>}}:{{<password>}}
   OPENSSL_CONF={{<path to example-cloudhsm-openssl.cnf>}}
   ```

   以 CU 憑證取代{{<CU 使用者名稱>}}和{{<密碼>}}。將 {{<path to example-cloudhsm-openssl.cnf>}} 取代為您在 中建立之組態檔案的完整路徑[為 OpenSSL 提供者設定 NGINX](#configure-nginx-provider)。

    儲存檔案。

------
#### [ RHEL 9 (9.2\+) ]

   在文字編輯器中開啟 `/etc/sysconfig/nginx` 檔案。這可能需要 Linux 根許可。新增密碼編譯使用者 (CU) 登入資料和 OpenSSL 組態檔案的路徑：

   ```
   CLOUDHSM_PIN={{<CU user name>}}:{{<password>}}
   OPENSSL_CONF={{<path to example-cloudhsm-openssl.cnf>}}
   ```

   以 CU 憑證取代{{<CU 使用者名稱>}}和{{<密碼>}}。將 {{<path to example-cloudhsm-openssl.cnf>}} 取代為您在 中建立之組態檔案的完整路徑[為 OpenSSL 提供者設定 NGINX](#configure-nginx-provider)。

    儲存檔案。

------
#### [ RHEL 10 (10.0\+) ]

   在文字編輯器中開啟 `/etc/sysconfig/nginx` 檔案。這可能需要 Linux 根許可。新增密碼編譯使用者 (CU) 登入資料和 OpenSSL 組態檔案的路徑：

   ```
   CLOUDHSM_PIN={{<CU user name>}}:{{<password>}}
   OPENSSL_CONF={{<path to example-cloudhsm-openssl.cnf>}}
   ```

   以 CU 憑證取代{{<CU 使用者名稱>}}和{{<密碼>}}。將 {{<path to example-cloudhsm-openssl.cnf>}} 取代為您在 中建立之組態檔案的完整路徑[為 OpenSSL 提供者設定 NGINX](#configure-nginx-provider)。

    儲存檔案。

------
#### [ Ubuntu 24.04 ]

   在文字編輯器中開啟 `/etc/sysconfig/nginx` 檔案。這可能需要 Linux 根許可。新增密碼編譯使用者 (CU) 登入資料和 OpenSSL 組態檔案的路徑：

   ```
   CLOUDHSM_PIN={{<CU user name>}}:{{<password>}}
   OPENSSL_CONF={{<path to example-cloudhsm-openssl.cnf>}}
   ```

   以 CU 憑證取代{{<CU 使用者名稱>}}和{{<密碼>}}。將 {{<path to example-cloudhsm-openssl.cnf>}} 取代為您在 中建立之組態檔案的完整路徑[為 OpenSSL 提供者設定 NGINX](#configure-nginx-provider)。

    儲存檔案。

------

1. 啟動 NGINX 伺服器。

------
#### [ Amazon Linux 2023 ]

   停止所有 NGINX 程序

   ```
   $ systemctl stop nginx
   ```

   重新載入 `systemd` 組態以取得最新的變更

   ```
   $ systemctl daemon-reload
   ```

   啟動 NGINX

   ```
   $ systemctl start nginx
   ```

------
#### [ RHEL 9 (9.2\+) ]

   停止任何正在運行的 NGINX 進程

   ```
   $ systemctl stop nginx
   ```

   重新載入 `systemd` 組態以取得最新的變更

   ```
   $ systemctl daemon-reload
   ```

   啟動 NGINX 進程

   ```
   $ systemctl start nginx
   ```

------
#### [ RHEL 10 (10.0\+) ]

   停止任何正在運行的 NGINX 進程

   ```
   $ systemctl stop nginx
   ```

   重新載入 `systemd` 組態以取得最新的變更

   ```
   $ systemctl daemon-reload
   ```

   啟動 NGINX 進程

   ```
   $ systemctl start nginx
   ```

------
#### [ Ubuntu 24.04 ]

   停止任何正在運行的 NGINX 進程

   ```
   $ systemctl stop nginx
   ```

   重新載入 `systemd` 組態以取得最新的變更

   ```
   $ systemctl daemon-reload
   ```

   啟動 NGINX 進程

   ```
   $ systemctl start nginx
   ```

------

設定 NGINX 之後，請前往 [驗證 HTTPS 是否使用您已設定的憑證](#ssl-offload-verify-https-connection-linux)。

### 設定 HAProxy Web 伺服器
<a name="ssl-offload-provider-configure-haproxy"></a>

使用本節設定具有 OpenSSL 提供者的 HAProxy。下列範例示範如何使用 CloudHSM 憑證和金鑰設定 HAProxy。<a name="configure-haproxy-provider"></a>

**設定適用於 OpenSSL 提供者的 HAProxy**

1. 如果存在，請備份現有的合併憑證檔案：

   ```
   $ cp server-combined.pem server-combined.pem.backup
   ```

1. 使用您的憑證和 CloudHSM 仿造 PEM 金鑰建立 HAProxy 的合併憑證檔案：

   ```
   $ cat server.crt server.key > server-combined.pem
   ```

1. 備份現有的 HAProxy 組態：

   ```
   $ cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup
   ```

1. 在 建立新的 CloudHSM TLS 卸載組態`/etc/haproxy/haproxy.cfg`：

   ```
   global
       daemon
       ssl-provider cloudhsm
       # It is *strongly* recommended to generate unique DH parameters
       # Generate them with: openssl dhparam -out /etc/haproxy/dhparams.pem 2048
       # ssl-dh-param-file /etc/haproxy/dhparams.pem
       ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305
       ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
       ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
   
   defaults
       mode http
       timeout connect 5000ms
       timeout client 50000ms
       timeout server 50000ms
   
   frontend haproxy_frontend
       bind *:443 ssl crt /path/to/server-combined.pem
       default_backend web_servers
   
   backend web_servers
       server web1 127.0.0.1:8080 check
   ```

   更新憑證路徑以符合您的檔案位置。

1. 將 systemd 設定為使用 HAProxy 的環境檔案。位置取決於您的 Linux 發行版本。

------
#### [ Amazon Linux and RHEL ]

   備份和修改 HAProxy 服務檔案：

   ```
   $ cp /lib/systemd/system/haproxy.service /lib/systemd/system/haproxy.service.backup
   ```

   在 【服務】 區段下編輯`/lib/systemd/system/haproxy.service`並新增以下行：

   ```
   EnvironmentFile=/etc/sysconfig/haproxy
   ```

------
#### [ Ubuntu ]

   備份和修改 HAProxy 服務檔案：

   ```
   $ cp /lib/systemd/system/haproxy.service /lib/systemd/system/haproxy.service.backup
   ```

   在 【服務】 區段下編輯`/lib/systemd/system/haproxy.service`並新增以下行：

   ```
   EnvironmentFile=/etc/default/haproxy
   ```

------

1. 在系統的適當位置建立環境檔案。

------
#### [ Amazon Linux and RHEL ]

   如果存在，請備份 HAProxy 環境檔案：

   ```
   $ cp /etc/sysconfig/haproxy /etc/sysconfig/haproxy.backup
   ```

   `/etc/sysconfig/haproxy` 使用下列內容建立 HAProxy 環境檔案：

   ```
   CLOUDHSM_PIN={{<CU user name>}}:{{<password>}}
   ```

------
#### [ Ubuntu ]

   如果存在，請備份 HAProxy 環境檔案：

   ```
   $ cp /etc/default/haproxy /etc/default/haproxy.backup
   ```

   `/etc/default/haproxy` 使用下列內容建立 HAProxy 環境檔案：

   ```
   CLOUDHSM_PIN={{<CU user name>}}:{{<password>}}
   ```

------

   以您的 {{CU 登入資料取代 <CU 使用者名稱>}} 和 {{<password>}}。

1. 重新載入系統化組態：

   ```
   $ systemctl daemon-reload
   ```

1. 使用 CloudHSM TLS 卸載組態啟動 HAProxy：

   ```
   $ systemctl start haproxy
   ```

   您也可以直接使用自訂組態檔案執行 HAProxy：

   ```
   $ haproxy -f /path/to/haproxy-cloudhsm.cfg
   ```

設定 HAProxy 之後，請前往 [驗證 HTTPS 是否使用您已設定的憑證](#ssl-offload-verify-https-connection-linux)。

## 步驟 4：啟用 HTTPS 流量並驗證憑證
<a name="ssl-offload-enable-traffic-and-verify-certificate-provider"></a>

使用 設定 Web 伺服器進行 SSL/TLS 卸載後 AWS CloudHSM，請將 Web 伺服器執行個體新增至允許傳入 HTTPS 流量的安全群組。這可讓用戶端 (例如 Web 瀏覽器) 與 Web 伺服器建立 HTTPS 連線。然後，對 Web 伺服器進行 HTTPS 連線，並確認其使用您為 SSL/TLS 卸載設定的憑證 AWS CloudHSM。

**Topics**
+ [啟用傳入 HTTPS 連線](#ssl-offload-add-security-group-linux)
+ [驗證 HTTPS 是否使用您已設定的憑證](#ssl-offload-verify-https-connection-linux)

### 啟用傳入 HTTPS 連線
<a name="ssl-offload-add-security-group-linux"></a>

若要從用戶端 (例如 Web 瀏覽器) 連接到 Web 伺服器，請建立允許傳入 HTTPS 連接的安全群組。特別是應該允許連接埠 443 上的傳入 TCP 連線。將此安全群組指派到您的 Web 伺服器。

**建立 HTTPS 的安全群組並將其指派至您的 Web 伺服器**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中選擇**安全群組**。

1. 選擇**建立安全群組**。

1. 對於 **Create Security Group (建立安全群組)**，執行下列動作：

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

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

   1. 對於 **VPC**，選擇包含 Web 伺服器 Amazon EC2 執行個體的 VPC。

   1. 選取 **Add Rule (新增規則)**。

   1. 對於**類型**，從下拉式視窗中選取 **HTTPS**。

   1. 對於**來源**，輸入來源位置。

   1. 選擇**建立安全群組**。

1. 在導覽窗格中，選擇**執行個體**。

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

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

1. 對於**關聯的安全群組**，請選取搜尋方塊，然後選取您為 HTTPS 建立之安全群組。然後選擇**新增安全群組**。

1. 選取**儲存**。

### 驗證 HTTPS 是否使用您已設定的憑證
<a name="ssl-offload-verify-https-connection-linux"></a>

將 Web 伺服器新增至安全群組後，您可以驗證 SSL/TLS 卸載是否使用您的自我簽署憑證。若要這樣做，您可以使用 Web 瀏覽器或使用 [OpenSSL s\_client](https://www.openssl.org/docs/manmaster/man1/s_client.html) 之類的工具。

**使用 Web 瀏覽器驗證 SSL/TLS 卸載**

1. 使用 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 執行個體](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-ec2-instance.html)。

1. 使用您的 Web 瀏覽器來檢視 Web 伺服器憑證。如需詳細資訊，請參閱下列內容：
   + 若為 Mozilla Firefox，請參閱 Mozilla 技術支援網站上的[檢視憑證](https://support.mozilla.org/en-US/kb/secure-website-certificate#w_view-a-certificate)。
   + 若為 Google Chrome，請參閱 Google Web 開發人員工具網站上的[了解安全問題](https://developers.google.com/web/tools/chrome-devtools/security)。

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

1. 確保 SSL/TLS 憑證是您設定 Web 伺服器所要使用的憑證。

**使用 OpenSSL s\_client 來驗證 SSL/TLS 卸載**

1. 執行以下 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 執行個體](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-ec2-instance.html)。

1. 確保 SSL/TLS 憑證是您設定 Web 伺服器所要使用的憑證。

您現在有透過 HTTPS 而受到保護的網站。Web 伺服器的私有金鑰會存放在 AWS CloudHSM 叢集的 HSM 中。

若要新增負載平衡器，請參閱 [使用 Elastic Load Balancing for 新增負載平衡器 AWS CloudHSM（選用）](third-offload-add-lb.md)。