クライアントと AWS CloudHSM 間に相互 TLS を設定する(推奨) - AWS CloudHSM

クライアントと AWS CloudHSM 間に相互 TLS を設定する(推奨)

以下のトピックでは、クライアントと AWS CloudHSM 間の相互 TLS (mTLS) を有効にするために完了する必要がある手順について説明します。現在、この機能は hsm2m.medium でのみ利用できます。HSM タイプの詳細については、「AWS CloudHSM クラスターモード」を参照してください。

ステップ 1. トラストアンカーを作成して HSM に登録する

mTLS を有効にする前に、トラストアンカーを作成して HSM に登録する必要があります。これは 2 ステップのプロセスです。

プライベートキーを使用して、自己署名ルート証明書を作成します。

注記

実稼働用クラスターでは、作成しようとしているキーはランダム性の信頼できるソースを使用して安全な方法で作成されている必要があります。安全なオフサイトあるいはオフライン HSM またはその同等を使用することが推奨されます。キーを安全に保存します。

開発とテストでは、任意の便利なツール (OpenSSL など) を使用してキーを作成し、ルート証明書に自己署名できます。AWS CloudHSM の有効化 mTLS でクライアント証明書に署名するには、キーとルート証明書が必要です。

次の例は、OpenSSL を使用してプライベートキーと自己署名ルート証明書を作成する方法を示しています。

例 — OpenSSL でプライベートキーを作成する

次のコマンドを使用して、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:
例 – 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 に登録する

自己署名ルート証明書を作成した後、管理者はそれをトラストアンカーとして 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. CloudHSM CLI でトラストアンカーを登録する コマンドを使用してトラストアンカーを登録します。詳細については、次の例を参照するか、または help cluster mtls register-trust-anchor コマンドを使用してください。

例 — トラストアンカーを 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. AWS CloudHSM の mTLS を有効にする

AWS CloudHSM の mTLS を有効にするには、[トラストアンカーを作成して HSM に登録する] で生成したルート証明書によって署名したプライベートキーとクライアント証明書を作成し、任意のクライアント SDK 5 設定ツールを使用して、プライベートキーパスとクライアント証明書チェーンパスを設定する必要があります。

プライベートキーとクライアント証明書チェーンを作成する

例 — OpenSSL でプライベートキーを作成する

次のコマンドを使用して、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:
例 – OpenSSL を使用して証明書署名リクエスト (CSR) を生成する

次のコマンドを使用して、作成したプライベートキーから証明書署名リクエスト (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 に署名する

次のコマンドを使用して、[トラストアンカーを作成して HSM に登録する] で作成および登録したルート証明書を使用して CSR に署名し、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 に登録する] で中間証明書をトラストアンカーとして登録した場合は、必ずクライアント証明書と証明書チェーン全体を組み合わせてクライアント証明書チェーンを作成してください。

クライアント SDK 5 の mTLS を設定する

任意のクライアント SDK 5 設定ツールを使用して、適切なクライアントキーパスとクライアント証明書チェーンパスを指定することで、相互 TLS を有効にします。クライアント SDK 5 の設定ツールの詳細については、「AWS CloudHSM クライアント SDK 5 設定ツール」 を参照してください。

PKCS #11 library
Linux のクライアント SDK 5 で TLS クライアントと HSM の相互認証にカスタム証明書とキーを使用するには
  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 で 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
  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 のクライアント SDK 5 で TLS クライアントと HSM の相互認証にカスタム証明書とキーを使用するには
  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 のクライアント SDK 5 で TLS クライアントと HSM の相互認証にカスタム証明書とキーを使用するには
  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 で 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
  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 のクライアント SDK 5 で TLS クライアントと HSM の相互認証にカスタム証明書とキーを使用するには
  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 で 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
  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. AWS CloudHSM に対して mTLS 適用を設定する

任意の クライアント 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 接続で CloudHSM CLI を起動します。

    2. mTLS 適用を設定する前に、admin としてのユーザー名を持つ管理者が HSM にログインする必要があります。

  3. CloudHSM CLI で mTLS 適用レベルを設定する コマンドを使用して適用を設定します。詳細については、次の例を参照するか、または help cluster mtls set-enforcement コマンドを使用してください。

    例 — 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 証明書を持つクラスターにのみ接続できます。