設定用戶端與 AWS CloudHSM TLS之間的相互關係 (建議) - AWS CloudHSM

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

設定用戶端與 AWS CloudHSM TLS之間的相互關係 (建議)

下列主題說明您必須完成的步驟,才能啟用用戶端與 之間的相互 TLS(m TLS) AWS CloudHSM。目前此功能僅適用於 hsm2m.medium。如需HSM類型的詳細資訊,請參閱 AWS CloudHSM 叢集模式

步驟 1. 在 上建立並註冊信任錨點 HSM

在啟用 m HSM之前,必須先在 上建立並註冊信任錨點TLS。這是一個兩步驟程序:

建立私有金鑰和自我簽署根憑證

注意

針對生產叢集,應使用信任的隨機來源以安全的方式建立您想建立的金鑰。建議您使用安全的異地和離線HSM或同等設備。安全地存放金鑰。

對於開發和測試,您可以使用任何方便的工具 (例如 Open SSL) 來建立金鑰並自我簽署根憑證。您需要 金鑰和根憑證,才能在 的啟用 mTLS AWS CloudHSM中簽署用戶端憑證。

下列範例示範如何使用 Open SSL建立私有金鑰和自我簽署根憑證。

範例 – 使用 Open 建立私有金鑰SSL

使用下列命令建立以 AES-256 演算法加密的 4096 位元RSA金鑰。若要使用此範例,請取代 <mtls_ca_root_1.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:
範例 – 使用 Open 建立自我簽署根憑證SSL

使用下列命令,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

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

若要向 註冊信任錨點 HSM
  1. 使用下列命令啟動 CloudHSM CLI:

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. 使用 CloudHSM CLI,以管理員身分登入。

    aws-cloudhsm > login --username admin --role admin Enter password: { "error_code": 0, "data": { "username": "admin", "role": "admin" } }
  3. 使用 向 Cloud 註冊信任錨點HSM CLI 命令來註冊信任錨點。如需詳細資訊,請參閱下列範例或使用 help cluster mtls register-trust-anchor 命令。

範例 – 向 AWS CloudHSM 叢集註冊信任錨點

下列範例示範如何在 CloudHSM 中使用 cluster mtls register-trust-anchor命令CLI,在 上註冊信任錨點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 支援具有 2048 位元RSA金鑰的長度 4 憑證鏈、具有 3072 位元RSA金鑰的長度 3 憑證鏈、具有 4096 位元RSA金鑰的長度 3 憑證鏈,以及具有 EC 金鑰的長度 6 憑證鏈。

成功註冊信任錨點後,您可以執行 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

若要為 啟用 mTLS AWS CloudHSM,您需要建立私有金鑰和由我們在建立中產生的根憑證簽署的用戶端憑證,並將信任錨點註冊到 HSM,然後使用任何 Client SDK 5 設定工具來設定私有金鑰路徑和用戶端憑證鏈路徑。

建立私有金鑰和用戶端憑證鏈

範例 – 使用 Open 建立私有金鑰SSL

使用下列命令建立以 AES-256 演算法加密的 4096 位元RSA金鑰。若要使用此範例,請取代 <ssl-client.key> 包含您要存放金鑰的檔案名稱。

$ openssl genrsa -out <ssl-client.key> -aes256 4096 Generating RSA private key, 4096 bit long modulus .....................................+++ .+++ e is 65537 (0x10001) Enter pass phrase for ssl-client.key: Verifying - Enter pass phrase for ssl-client.key:
範例 – 使用 Open 產生憑證簽署請求 (CSR)SSL

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

$ openssl req -new -key <ssl-client.key> -out <ssl-client.csr> Enter pass phrase for ssl-client.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 []:
範例 – CSR使用根憑證簽署

使用下列命令,CSR以我們在建立和註冊信任錨點到 HSM中建立和註冊的根憑證簽署 ,並建立名為 的用戶端憑證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>
範例 – 建立用戶端憑證鏈

使用以下命令,將我們在建立和註冊的用戶端憑證和根憑證合併到 上,並將信任錨點註冊HSM到 上,並建立名為 的用戶端憑證鏈ssl-client.pem,其將在下一個步驟中用於設定。

$ cat <ssl-client.crt> <mtls_ca_root_1.crt> > <ssl-client.pem>
注意

如果您在建立中繼憑證並將信任錨點註冊到 HSM上作為信任錨點,請務必將用戶端憑證與整個憑證鏈結合,以建立用戶端憑證鏈。

設定用戶端 5 SDK 的 mTLS

使用任何 Client SDK 5 設定工具,TLS透過提供正確的用戶端金鑰路徑和用戶端憑證鏈路徑來啟用相互。如需設定 Client 5 SDK 工具的詳細資訊,請參閱 AWS CloudHSM Client SDK 5 設定工具

PKCS #11 library
使用自訂憑證和金鑰與 Linux 上的 Client SDK 5 HSM進行TLS用戶端相互身分驗證
  1. 將您的金鑰和憑證複製到適當的目錄。

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc $ sudo cp ssl-client.key /opt/cloudhsm/etc
  2. 使用設定工具來指定 ssl-client.pemssl-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 HSM進行TLS用戶端相互身分驗證
  1. 將您的金鑰和憑證複製到適當的目錄。

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. 透過 PowerShell 解譯器,使用設定工具指定 ssl-client.pemssl-client.key

    & "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 上的 Client SDK 5 HSM進行TLS用戶端相互身分驗證
  1. 將您的金鑰和憑證複製到適當的目錄。

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. 使用設定工具來指定 ssl-client.pemssl-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
JCE provider
使用自訂憑證和金鑰與 Linux 上的 Client SDK 5 HSM進行TLS用戶端相互身分驗證
  1. 將您的金鑰和憑證複製到適當的目錄。

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. 使用設定工具來指定 ssl-client.pemssl-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 HSM進行TLS用戶端相互身分驗證
  1. 將您的金鑰和憑證複製到適當的目錄。

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. 透過 PowerShell 解譯器,使用設定工具指定 ssl-client.pemssl-client.key

    & "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 上的 Client SDK 5 HSM進行TLS用戶端相互身分驗證
  1. 將您的金鑰和憑證複製到適當的目錄。

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. 使用設定工具來指定 ssl-client.pemssl-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 HSM進行TLS用戶端相互身分驗證
  1. 將您的金鑰和憑證複製到適當的目錄。

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. 透過 PowerShell 解譯器,使用設定工具指定 ssl-client.pemssl-client.key

    & "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

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

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

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. 使用 CloudHSM CLI,以管理員身分登入。

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

    1. 請確定您已設定 CloudHSM,CLI並在 mTLS 連線CLI下啟動 CloudHSM。

    2. 在設定 mTLS 強制執行之前,您必須以預設管理員使用者身分登入,使用者名稱為 admin

  3. 使用 使用 Cloud 設定 mTLS 強制執行層級HSM CLI 命令來設定強制執行。如需詳細資訊,請參閱下列範例或使用 help cluster mtls set-enforcement 命令。

    範例 – 使用 AWS CloudHSM 叢集設定 mTLS 強制執行

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

    aws-cloudhsm > cluster mtls set-enforcement --level cluster { "error_code": 0, "data": { "message": "Mtls enforcement level set to Cluster successfully" } }
    警告

    在叢集中強制執行 mTLS 用量後,所有現有的非 mTLS 連線都會遭到捨棄,而且您只能使用 mTLS 憑證連線到叢集。