AWS CloudHSM クライアントのエンドツーエンド暗号化の仕組みと、使用される HSM 証明書について知りたいと考えています。
簡単な説明
CloudHSM クライアントと CloudHSM クラスター内の HSM 間のエンドツーエンドの暗号化された接続は、2 つのネストされた TLS 接続を介して確立されます。詳細については、「CloudHSM client end-to-end encryption」を参照してください。
解決策
HSM とのエンドツーエンドの暗号化通信を設定するには、次の手順に従います。
**注:**TLS 接続が失敗しないように、必ず指定の証明書を使用してください。
サーバー TLS 接続
クライアントから HSM ハードウェアをホストするサーバーへの TLS 接続を確立します。これは、サーバーとクライアント間の双方向の TLS 接続です。
サーバーは自己署名証明書を送信します。次のようなコマンドを実行すると、この自己署名証明書の詳細を表示できます。
serial=B7FA7A40976CBE82
issuer= /C=US/ST=Virginia/L=Herndon/O=AWS/OU=AWS Cryptography/CN=CloudHSM/emailAddress=cloudhsm-team@amazon.com
subject= /C=US/ST=Virginia/L=Herndon/O=AWS/OU=AWS Cryptography/CN=CloudHSM/emailAddress=cloudhsm-team@amazon.com
$ openssl s_client -connect <HSM_IP>:2223 2> /dev/null | openssl x509 -subject -issuer -serial -noout
HSM クライアントは、この証明書が /opt/cloudhsm/etc/cert ディレクトリの CA トラストパスに含まれていることを確認します。cloudhsm-client パッケージには、次のような 2 つの証明書が含まれています。
$ cd /opt/cloudhsm/etc/certs
$ ls
21a10654.0 712ff948.0
$ openssl x509 -subject -issuer -serial -noout -in 21a10654.0
subject= /C=US/ST=Virginia/L=Herndon/O=AWS/OU=AWS Cryptography/CN=CloudHSM/emailAddress=cloudhsm-team@amazon.com
issuer= /C=US/ST=Virginia/L=Herndon/O=AWS/OU=AWS Cryptography/CN=CloudHSM/emailAddress=cloudhsm-team@amazon.com
serial=B7FA7A40976CBE82
$ openssl x509 -subject -issuer -serial -noout -in 712ff948.0
subject= /C=US/ST=Virginia/L=Herndon/O=AWS/OU=Cryptography/CN=CloudHSM/emailAddress=cloudhsm-team@amazon.com
issuer= /C=US/ST=Virginia/L=Herndon/O=AWS/OU=Cryptography/CN=CloudHSM/emailAddress=cloudhsm-team@amazon.com
serial=A7525B285D1C2BB5
HSM クライアントは、クライアント証明書を /opt/cloudhsm/etc/client.crt ディレクトリに送信します。クライアント証明書は、/opt/cloudhsm/etc/customerCA.crt ディレクトリにある CloudHSM クライアントの CloudHSM クライアント CA 証明書に含まれるデフォルト証明書のいずれかであることが必要です。
サーバーは、これがデフォルトの証明書であるか、customerCA.crt によって発行された証明書であることを確認します。
HSM TLS 接続
最初の TLS 接続レイヤー内で、クライアントから HSM への 2 番目の TLS 接続を確立します。サーバーは、クラスターの初期化中に発行された CloudHSM クラスター証明書を送信します。次のコマンドを使って、証明書をダウンロードします。
aws cloudhsmv2 describe-clusters --query "Clusters[?ClusterId=='<Cluster_ID>'].Certificates.ClusterCertificate" --output text
クライアントは、これが /opt/cloudhsm/etc/customerCA.crt ディレクトリにある customerCA.crt によって発行された証明書であることを確認してから、クラスター内の HSM への接続を検証します。
**注:**サーバー証明書と CloudHSM クラスター証明書は変更または更新できません。