

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

# 在用戶端和 之間設定交互 TLS AWS CloudHSM （建議）
<a name="getting-started-setup-mtls"></a>

下列主題說明您必須完成的步驟，才能在用戶端與 之間啟用交互 Transport Layer Security (mTLS) AWS CloudHSM。

**考量事項**
+ 目前此功能僅適用於 hsm2m.medium。如需 HSM 類型的詳細資訊，請參閱 [AWS CloudHSM 叢集模式](cluster-hsm-types.md)。
+ 與 搭配使用的 AWS CloudHSM 金鑰存放區不支援 mTLS AWS Key Management Service。

**Topics**
+ [步驟 1. 在 HSM 上建立並註冊信任錨點](#setup-mtls-create-and-register-trust-anchor)
+ [步驟 2. 為 啟用 mTLS AWS CloudHSM](#getting-start-setup-mtl-sdk)
+ [步驟 3。設定 的 mTLS 強制執行 AWS CloudHSM](#getting-start-setup-mtls-enforcement)

## 步驟 1. 在 HSM 上建立並註冊信任錨點
<a name="setup-mtls-create-and-register-trust-anchor"></a>

必須先在 HSM 上建立並註冊信任錨點，才能啟用 mTLS。這是一個兩步驟的程序：

**Topics**
+ [建立私有金鑰和自我簽署根憑證](#setup-mtls-create-trust-anchor)
+ [在 HSM 上註冊信任錨點](#setup-mtls-register-trust-anchor)

### 建立私有金鑰和自我簽署根憑證
<a name="setup-mtls-create-trust-anchor"></a>

**注意**  
針對生產叢集，應使用信任的隨機來源以安全的方式建立您想建立的金鑰。我們建議您使用安全的離站和離線 HSM 或其他同等項目。安全地存放金鑰。  
對於開發和測試，您可以使用任何方便的工具 （例如 OpenSSL) 來建立金鑰並自我簽署根憑證。您將需要 金鑰和根憑證，才能在[啟用 mTLS 的 AWS CloudHSM](#getting-start-setup-mtl-sdk) 中簽署用戶端憑證。

下列範例示範如何使用 [OpenSSL](https://www.openssl.org/) 建立私有金鑰和自我簽署根憑證。

**Example – 使用 OpenSSL 建立私有金鑰**  
使用下列命令來建立使用 AES-256 演算法加密的 4096 位元 RSA 金鑰。若要使用此範例，請將 *<mtls\$1ca\$1root\$11.key>* 取代為您要存放金鑰的檔案名稱。  

```
$ openssl genrsa -out <mtls_ca_root_1.key> -aes256 4096
Generating RSA private key, 4096 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
Enter pass phrase for mtls_ca_root_1.key:
Verifying - Enter pass phrase for mtls_ca_root_1.key:
```

**Example – 使用 OpenSSL 建立自我簽署根憑證**  
使用下列命令，`mtls_ca_root_1.crt`從您剛建立的私有金鑰建立名為 的自我簽署根憑證。憑證有效期為 25 年 (9130 天）。請閱讀畫面上的指示，並依照提示操作。  

```
$ openssl req -new -x509 -days 9130 -key mtls_ca_root_1.key -out mtls_ca_root_1.crt
Enter pass phrase for mtls_ca_root_1.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 []:
```

### 在 HSM 上註冊信任錨點
<a name="setup-mtls-register-trust-anchor"></a>

建立自我簽署根憑證之後，管理員必須將憑證註冊為 AWS CloudHSM 叢集的信任錨點。

**向 HSM 註冊信任錨點**

1. 使用下列命令來啟動 CloudHSM CLI：

------
#### [ Linux ]

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

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. 使用 CloudHSM CLI，以管理員身分登入。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 使用 ** [向 CloudHSM CLI 註冊信任錨點](cloudhsm_cli-cluster-mtls-register-trust-anchor.md) **命令來註冊信任錨點。如需詳細資訊，請參閱下列範例或使用 **help cluster mtls register-trust-anchor** 命令。

**Example – 向 AWS CloudHSM 叢集註冊信任錨點**  
下列範例示範如何在 CloudHSM CLI 中使用 **cluster mtls register-trust-anchor**命令，將信任錨點註冊到 HSM。若要使用此命令，管理員必須登入 HSM。以您自己的值取代這些值：  

```
aws-cloudhsm > cluster mtls register-trust-anchor --path </path/mtls_ca_root_1.crt>
{
  "error_code": 0,
  "data": {
    "trust_anchor": {
      "certificate-reference": "0x01",
      "certificate": "<PEM Encoded Certificate>",
      "cluster-coverage": "full"
    }
  }
}
```
AWS CloudHSM 支援將中繼憑證註冊為信任錨點。在這種情況下，整個 PEM 編碼的憑證鏈檔案需要註冊到 HSM，並以階層順序使用憑證。  
 AWS CloudHSM 支援 6980 位元組的憑證鏈。
成功註冊信任錨點後，您可以執行 **cluster mtls list-trust-anchors**命令來檢查目前註冊的信任錨點，如下所示：  

```
aws-cloudhsm > cluster mtls list-trust-anchors
{
  "error_code": 0,
  "data": {
    "trust_anchors": [
      {
        "certificate-reference": "0x01",
        "certificate": "<PEM Encoded Certificate>",
        "cluster-coverage": "full"
      }
    ]
  }
}
```
 可以在 hsm2m.medium 上註冊的信任錨點數目上限為兩 (2) 個。

## 步驟 2. 為 啟用 mTLS AWS CloudHSM
<a name="getting-start-setup-mtl-sdk"></a>

若要為 啟用 mTLS AWS CloudHSM，您需要建立私有金鑰和由我們在[建立和註冊信任錨點到 HSM](#setup-mtls-create-and-register-trust-anchor) 中產生的根憑證簽署的用戶端憑證，然後使用任何用戶端 SDK 5 設定工具來設定私有金鑰路徑和用戶端憑證鏈路徑。

**Topics**
+ [建立私有金鑰和用戶端憑證鏈](#create-client-ssl)
+ [為用戶端 SDK 5 設定 mTLS](#enable-ssl-5)

### 建立私有金鑰和用戶端憑證鏈
<a name="create-client-ssl"></a>

**Example – 使用 OpenSSL 建立私有金鑰**  
使用下列命令來建立 4096 位元 RSA 金鑰。若要使用此範例，請將 *<ssl-client.key>* 取代為您要存放金鑰的檔案名稱。  

```
$ openssl genrsa -out <ssl-client.key> 4096
Generating RSA private key, 4096 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
```

**Example – 使用 OpenSSL 產生憑證簽署請求 (CSR)**  
使用下列命令，從您剛建立的私有金鑰產生憑證簽署請求 (CSR)。請閱讀畫面上的指示，並依照提示操作。  

```
$ openssl req -new -key <ssl-client.key> -out <ssl-client.csr>
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 []:
```

**Example – 使用根憑證簽署 CSR**  
使用下列命令，以我們在[建立信任錨點並將其註冊到 HSM 中建立和註冊的根憑證簽署 CSR，](#setup-mtls-create-and-register-trust-anchor)並建立名為 的用戶端憑證`ssl-client.crt`。憑證有效期為 5 年 (1826 天）。  

```
$ openssl x509 -req -days 1826 -in <ssl-client.csr> -CA <mtls_ca_root_1.crt> -CAkey <mtls_ca_root_1.key> -CAcreateserial -out <ssl-client.crt>
```

**Example – 建立用戶端憑證鏈**  
使用下列命令，將我們在[建立信任錨點並註冊到 HSM](#setup-mtls-create-and-register-trust-anchor) 中建立和註冊的用戶端憑證和根憑證合併，並建立名為 的用戶端憑證鏈`ssl-client.pem`，用於在下一個步驟中設定。  

```
$ cat <ssl-client.crt> <mtls_ca_root_1.crt> > <ssl-client.pem>
```
 如果您在[建立中繼憑證並在 HSM 上註冊信任錨點](#setup-mtls-create-and-register-trust-anchor)做為信任錨點，請務必將用戶端憑證與整個憑證鏈結合，以建立用戶端憑證鏈。

### 為用戶端 SDK 5 設定 mTLS
<a name="enable-ssl-5"></a>

使用任何 用戶端 SDK 5 設定工具，透過提供正確的用戶端金鑰路徑和用戶端憑證鏈路徑來啟用交互 TLS。如需設定用戶端 SDK 5 工具的詳細資訊，請參閱 [AWS CloudHSM 用戶端 SDK 5 設定工具](configure-sdk-5.md) 。

------
#### [ PKCS \$111 library ]

**使用自訂憑證和金鑰搭配 Linux 上的用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   $ sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-pkcs11 \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**在 Windows 上使用自訂憑證和金鑰與用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解譯器時，請使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ OpenSSL Dynamic Engine ]

**使用自訂憑證和金鑰搭配 Linux 上的用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-dyn \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

------
#### [ Key Storage Provider (KSP) ]

**在 Windows 上使用自訂憑證和金鑰與用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解譯器時，請使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-ksp.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ JCE provider ]

**使用自訂憑證和金鑰搭配 Linux 上的用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-jce \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**在 Windows 上使用自訂憑證和金鑰與用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解譯器時，請使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ CloudHSM CLI ]

**使用自訂憑證和金鑰搭配 Linux 上的用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-cli \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**在 Windows 上使用自訂憑證和金鑰與用戶端 SDK 5 進行 TLS 用戶端-HSM 交互身分驗證**

1. 將您的金鑰和憑證複製到適當的目錄。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解譯器時，請使用設定工具來指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------

## 步驟 3。設定 的 mTLS 強制執行 AWS CloudHSM
<a name="getting-start-setup-mtls-enforcement"></a>

使用任何 用戶端 SDK 5 設定工具設定 之後， 用戶端與 之間的連線 AWS CloudHSM 將是叢集中的交互 TLS。不過，從組態檔案移除私有金鑰路徑和用戶端憑證鏈路徑，將再次將連線轉換為一般 TLS。您可以使用 CloudHSM CLI 完成下列步驟，在叢集中設定 mtls 強制執行：

1. 使用下列命令來啟動 CloudHSM CLI：

------
#### [ Linux ]

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

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. 使用 CloudHSM CLI，以管理員身分登入。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```
**注意**  
 1. 請確定您已設定 CloudHSM CLI，並在 mTLS 連線下啟動 CloudHSM CLI。  
 2. 在設定 mTLS 強制執行之前，您必須以使用者名稱為 **admin** 的預設管理員使用者身分登入。

1. 使用 ** [使用 CloudHSM CLI 設定 mTLS 強制執行層級](cloudhsm_cli-cluster-mtls-set-enforcement.md) **命令來設定強制執行。如需詳細資訊，請參閱下列範例或使用 **help cluster mtls set-enforcement** 命令。  
**Example – 使用 AWS CloudHSM 叢集設定 mTLS 強制執行**  

   下列範例示範如何在 CloudHSM CLI 中使用 **cluster mtls set-enforcement**命令，透過 HSM 設定 mTLS 強制執行。若要使用此命令，使用者名稱為 admin 的管理員必須登入 HSM。

   ```
   aws-cloudhsm > cluster mtls set-enforcement --level cluster
   {
     "error_code": 0,
     "data": {
       "message": "Mtls enforcement level set to Cluster successfully"
     }
   }
   ```
**警告**  
在叢集中強制執行 mTLS 用量之後，所有現有的非 mTLS 連線都會遭到捨棄，而且您只能使用 mTLS 憑證連線到叢集。