クライアントと 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 4096Generating 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 にトラストアンカーを登録するには
-
CloudHSM CLI を起動するには、次のコマンドを使用します。
-
CloudHSM CLI を使用して、管理者としてログインします。
aws-cloudhsm >
login --username admin --role admin
Enter password: { "error_code": 0, "data": { "username": "admin", "role": "admin" } } -
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 4096Generating 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 設定ツール」 を参照してください。
ステップ 3. AWS CloudHSM に対して mTLS 適用を設定する
任意の クライアント SDK 5 設定ツールで設定した後、クライアントと AWS CloudHSM 間の接続はクラスター内の相互 TLS になります。ただし、設定ファイルからプライベートキーパスとクライアント証明書チェーンパスを削除すると、接続が再び通常の TLS になります。CloudHSM CLI を使用して、次の手順を実行してクラスター内の mtls 強制を設定できます。
-
CloudHSM CLI を起動するには、次のコマンドを使用します。
-
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 にログインする必要があります。
-
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 証明書を持つクラスターにのみ接続できます。