でクラスターを初期化する AWS CloudHSM - AWS CloudHSM

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でクラスターを初期化する AWS CloudHSM

クラスターを作成して にハードウェアセキュリティモジュール (HSM) を追加したら AWS CloudHSM、クラスターを初期化できます。 クラスターを初期化するには、以下のトピックの手順を実行します。

注記

クラスターを初期化する前に、HSM のアイデンティティと正当性を検証するプロセスを確認します。このプロセスはオプションですが、使用期間はクラスターが初期化されるまでの間に限ります。クラスターの初期化後は、このプロセスを使用して証明書の取得や HSM の検証を行うことはできません。

概要:

クラスターの初期化プロセスでは、証明書ベースの認証システムを通じて、クラスターと HSMsの所有権と制御を確立します。このプロセスは、お客様がクラスター内の HSMs の唯一の所有者であることを証明し、HSM への今後のすべての接続に必要な信頼の基盤を作成します HSMs 。

このページでは、以下の方法を示します。

  • クラスターの証明書署名リクエスト (CSR) を取得します。

  • プライベートキー (複数可) を生成して使用して、自己署名ルート証明書または証明書チェーンを作成します。

  • クラスターの CSR に署名して、署名付き HSM 証明書を作成します。

  • 署名付き HSM 証明書と自己署名証明書または証明書チェーンを使用してクラスターを初期化します。

始める準備ができたら、「ステップ 1. クラスター CSR の取得」を参照してください。

ステップ 1. クラスター CSR の取得

クラスターを初期化する前に、クラスターの最初の HSM によって生成された証明書署名リクエスト (CSR) をダウンロードして署名する必要があります。「クラスターの HSM のアイデンティティの確認」のステップに従っていれば、既に CSR があり、「CSR の署名」に進むことができます。それ以外の場合は、AWS CloudHSM コンソールAWS Command Line Interface (AWS CLI)、または AWS CloudHSM API を使用して CSR を取得します。

Console
CSR を取得するには (コンソール)
  1. https://console.aws.amazon.com/cloudhsm/home で AWS CloudHSM コンソールを開きます。

  2. 検証する HSM のクラスター ID の横にあるラジオボタンをオンにします。

  3. アクション を選択します。ドロップダウンメニューから 初期化 を選択します。

  4. HSM を作成する 前のステップ を完了していない場合は、作成する HSM のアベイラビリティーゾーン (AZ) を選択します。次に、作成 を選択します。

  5. CSR の準備ができると、CSR をダウンロードするためのリンクが表示されます。

    AWS CloudHSM コンソールで証明書署名リクエストページをダウンロードします。
  6. [Cluster CSR] を選択して CSR をダウンロードし、保存します。

AWS CLI
CSR を取得するには (AWS CLI)
  • コマンドプロンプトで、次の describe-clusters コマンドを実行し、CSR を抽出してファイルに保存します。<cluster ID> を、前に作成したクラスターの ID に置き換えます。

    $ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \ --output text \ --query 'Clusters[].Certificates.ClusterCsr' \ > <cluster ID>_ClusterCsr.csr
AWS CloudHSM API
CSR (AWS CloudHSM API) を取得するには
  1. DescribeClusters リクエストを送信します。

  2. レスポンスから CSR を抽出して保存します。

ステップ 2. ルート CA のプライベートキーを作成する

注記

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

開発とテストには、クラスター証明書の作成と署名に任意のツール (OpenSSL) などを使用できます。以下の例では、 キーを作成する方法を示します。キーを使用して自己署名証明書 (以下を参照) を作成したら、安全な方法でキーを保存する必要があります。 AWS CloudHSM インスタンスにサインインするには、証明書が存在する必要がありますが、プライベートキーは存在しません。

次の表は、証明書生成でサポートされているアルゴリズム、キーサイズ、曲線の概要を示しています。

アルゴリズム サイズ/カーブ

RSA PKCSv1.5

2048、3072、4096

RSA-PSS

2048、3072、4096

ECDSA

prime256v1、secp384r1、secp521r1

ダイジェスト

SHA-224, SHA-256, SHA-384、SHA-512

次のコマンド例を使用して、自己署名ルート CA のプライベートキーを作成します。

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

ステップ 3. CSR の署名

前のステップでは、クラスターの CSR を取得し、ルート CA のプライベートキーを作成しました。このステップでは、プライベートキーを使用して署名証明書を生成し、クラスターの CSR に署名します。以下のトピックでは、OpenSSL を使用して単一の自己署名証明書または証明書チェーンを作成するプロセスについて説明します。このステップ AWS CLI では は必要なく、シェルを AWS アカウントに関連付ける必要はありません。

重要

クラスターを初期化するには、トラストアンカーが RFC 5280 に準拠し、次の要件を満たしている必要があります。

  • X509v3 エクステンションを使用する場合は、X509v3 基本制約エクステンションが必要です。

  • トラストアンカーは自己署名証明書でなければなりません。

  • エクステンションの値は互いに矛盾してはいけません。

クラスターの CSR に署名するには、次のいずれかの方法を選択します。

証明書のアプローチを選択する

次の 2 つのアプローチのいずれかを選択する必要があります。両方のアプローチを完了しないでください。

オプション A: 単一の自己署名証明書

クラスターの CSR に署名する自己署名ルート証明書を 1 つ作成します。これは、信頼を確立する最もシンプルで直接的な方法です。

推奨対象:

  • 外部 PKI が不要な環境

  • シンプルさが優先されるテスト環境と開発環境

次に移動します。 自己署名証明書を 1 つ作成する

オプション B: 中間 CA を持つ証明書チェーン

中間認証機関を使用して証明書チェーンを作成します。中間証明書チェーンは、証明書の発行を中間 CAs に委任しながらルート認証機関 (CAs) をオフラインのままにすることで、セキュリティ、スケーラビリティ、柔軟性を強化し、ルート CA が侵害されるリスクを軽減します。

推奨対象:

  • 外部 PKI が必要な環境

  • AWS Private Certificate Authority (PCA) との統合

AWS PCA 統合の例: AWS プライベート認証機関を使用して中間 CA 証明書を作成および管理できます。これにより、ルート CA をオフラインにしておくというセキュリティ上の利点を維持しながら、更新や失効などの証明書ライフサイクル管理を自動化できます。 AWS PCA の詳細については、AWS Private Certificate Authority ユーザーガイドを参照してください。

次に移動します。 中間認証機関 (ICA) チェーンを作成する

自己署名証明書を 1 つ作成する

本稼働のクラスター用のプライベートキーの作成に使用する信頼できるハードウェアも、このキーを使用した自己署名証明書を生成するソフトウェアツールを提供していることが必要です。次の例では、OpenSSL と前のステップで作成したプライベートキーを使用して、自己署名ルート CA 署名証明書を作成します。証明書の有効期間は 10 年 (3652 日) です。画面の指示を読み、プロンプトに従います。

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

このコマンドは customerRootCA.crt という名前の証明書を作成します。この証明書は、 AWS CloudHSM クラスターに接続するすべてのホストに配置します。ファイルに別の名前を付与した場合、またはホストのルート以外のパスにファイルを保存した場合には、それぞれに応じてクライアント設定ファイルを編集する必要があります。作成したばかりの証明書およびプライベートキーを使用して、次のステップでクラスター証明書署名リクエスト (CSR) に署名します。

自己署名ルート CA を使用してクラスター CSR に署名する

本稼働のクラスター用のプライベートキーの作成に使用する信頼できるハードウェアも、このキーを使用して CSR に署名するツールを提供している必要があります。次の例では、OpenSSL を使用してクラスターの CSR に署名します。以下のコマンド例では、自己署名を使用して CSR に署名します。 customerRootCA.crt

$ openssl x509 -req -days 3652 -in <cluster ID>_ClusterCsr.csr \ -CA <customerRootCA>.crt \ -CAkey <customerRootCA>.key \ -CAcreateserial \ -out <cluster ID>_CustomerHsmCertificate.crt Signature ok subject=/C=US/ST=CA/O=Cavium/OU=N3FIPS/L=SanJose/CN=HSM:<HSM identifier>:PARTN:<partition number>, for FIPS mode Getting CA Private Key Enter pass phrase for <customerRootCA>.key:

完了すると、このコマンドは <cluster ID>_CustomerHsmCertificate.crt という名前のファイルを作成します。クラスターを初期化する際は、これを署名済み証明書として使用します。

署名付き証明書をルート CA と照合します (オプション)。

$ openssl verify -purpose sslserver -CAfile customerRootCA.crt <cluster ID>_CustomerHsmCertificate.crt <cluster ID>_CustomerHsmCertificate.crt: OK

自己署名ルート CA を使用して署名付き HSM 証明書を生成したら、「」に進みますステップ 4. クラスターの初期化

中間認証機関 (ICA) チェーンを作成する

次の例では、ルート認証局 (CA) と中間 CA で構成される長さ 2 の証明書チェーンを作成する手順を説明します。最初に自己署名ルート CA 証明書を作成し、ルート CA によって署名された中間 CA を生成します。最後に、中間 CA を使用してクラスターの CSR に署名し、HSM 証明書からルート CA への完全な信頼チェーンを作成します。このアプローチは、day-to-day証明書オペレーションに中間 CA を使用しながら、ルート CA をオフラインに保つことで、セキュリティを強化します。

重要

証明書チェーンを使用してクラスターを初期化するには、チェーンが次の要件を満たしている必要があります。

  • チェーンは、クラスター CSR に署名する中間 CA から順に並べる必要があります。この順序では、最初の ICA には、チェーン内の次の ICA の件名に一致する発行者が必要です。

  • ルート CA のみが自己署名である必要があります。つまり、発行者とサブジェクトは同一である必要があります。

  • チェーンは 4 つ以下の証明書 (末尾のルート CA を含む) で構成されている必要があり、チェーンの合計サイズは 16 KB (キロバイト) を超えることはできません。

  • すべての認証機関 (CAs) は、RFC 5280 ガイドラインに準拠する必要があります。

このセクションでは、ローカル証明書生成用の OpenSSL とマネージド証明書サービス用の AWS Private Certificate Authority (PCA) の 2 つの異なるアプローチを使用して中間認証機関チェーンを作成する例を示します。環境とセキュリティ要件に最適なアプローチを選択します。

注記

次の例は一般的なユースケースであり、最も基本的な設定を使用して簡素化されています。本番環境では、ユースケースに固有の追加の設定オプションとセキュリティ要件を確認してください。

OpenSSL

CA の一般的な v3 拡張機能を使用して OpenSSL 設定ファイルを作成します。

$ cat > ca-extensions.conf <<EOF [req] distinguished_name = req_distinguished_name [req_distinguished_name] C = Country Name (2 letter code) ST = State or Province Name (full name) L = Locality Name (eg, city) O = Organization Name (eg, company) OU = Organizational Unit Name (eg, section) CN = Common Name (e.g. server FQDN or YOUR name) [v3_ca] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical,CA:true keyUsage = critical, keyCertSign, cRLSign, digitalSignature EOF

OpenSSL を使用して自己署名ルート CA を生成します。

$ openssl req -new -x509 -days 3652 -key customerRootCA.key -out customerRootCA.crt -extensions v3_ca -config ca-extensions.conf Enter pass phrase for customerRootCA.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 []:

中間 CA キーを生成します。

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

中間 CA 証明書署名リクエスト (CSR) を作成します。

$ openssl req -new -key intermediateCA.key -out intermediateCA.csr Enter pass phrase for intermediateCA.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 []:

自己署名ルート CA を使用して、中間 CA 証明書を作成します。

$ openssl x509 -req -in intermediateCA.csr \ -CA customerRootCA.crt \ -CAkey customerRootCA.key \ -CAcreateserial \ -days 3652 \ -extensions v3_ca \ -extfile ca-extensions.conf \ -out intermediateCA.crt Certificate request self-signature ok subject=C= , ST= , L= , O= , OU=

証明書をチェーンファイルに結合します。

$ cat intermediateCA.crt customerRootCA.crt > chainCA.crt -----BEGIN CERTIFICATE----- [Intermediate CA] -----END CERTIFICATE----- ... ... -----BEGIN CERTIFICATE----- [Root CA] -----END CERTIFICATE-----

中間 CA を使用してクラスター CSR に署名します。

$ openssl x509 -req -days 3652 -in <cluster ID>_ClusterCsr.csr \ -CA intermediateCA.crt \ -CAkey intermediateCA.key \ -CAcreateserial \ -out <cluster ID>_CustomerHsmCertificate.crt Signature ok subject=/C=US/ST=CA/O=Cavium/OU=N3FIPS/L=SanJose/CN=HSM:<HSM identifier>:PARTN:<partition number>, for FIPS mode Getting CA Private Key Enter pass phrase for intermediateCA.key:
AWS PCA

AWS Private Certificate Authority を使用してルート CA を作成してアクティブ化します。

$ # 1. Create Root CA aws acm-pca create-certificate-authority \ --certificate-authority-configuration \ "KeyAlgorithm=RSA_4096, SigningAlgorithm=SHA256WITHRSA, Subject={Country=US,Organization=MyOrg,OrganizationalUnit=IT,CommonName=RootCA}" \ --certificate-authority-type ROOT # Store the Root CA Authority ARN from the previous output ROOT_CA_AUTHORITY_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<ca-authority-id>" # 2. Generate Root CA CSR aws acm-pca get-certificate-authority-csr \ --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \ --output text > customerRootCA.csr # 3. Self-sign Root CA Certificate aws acm-pca issue-certificate \ --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \ --csr fileb://customerRootCA.csr \ --signing-algorithm SHA256WITHRSA \ --template-arn arn:aws:acm-pca:::template/RootCACertificate/V1 \ --validity Value=3652,Type=DAYS # Store the Root CA certificate ARN from the previous output ROOT_CA_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<ca-authority-id>/certificate/<cert-id>" # 4. Retrieve the Root CA certificate aws acm-pca get-certificate \ --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \ --certificate-arn $ROOT_CA_ARN \ --output text > customerRootCA.crt # 5. Import the Root CA Certificate aws acm-pca import-certificate-authority-certificate \ --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \ --certificate fileb://customerRootCA.crt

下位 CA (中間 CA とも呼ばれます) を作成してアクティブ化します。

$ # 6. Create Subordinate CA aws acm-pca create-certificate-authority \ --certificate-authority-configuration \ "KeyAlgorithm=RSA_4096, SigningAlgorithm=SHA256WITHRSA, Subject={Country=US,Organization=MyOrg,OrganizationalUnit=IT,CommonName=SubordinateCA}" \ --certificate-authority-type SUBORDINATE # Store the Subordinate CA Authority ARN from the previous output SUB_CA_AUTHORITY_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<sub-ca-authority-id>" # 7. Generate Subordinate CA CSR aws acm-pca get-certificate-authority-csr \ --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \ --output text > intermediateCA.csr # 8. Issue Subordinate CA Certificate using Root CA aws acm-pca issue-certificate \ --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \ --csr fileb://intermediateCA.csr \ --signing-algorithm SHA256WITHRSA \ --template-arn arn:aws:acm-pca:::template/SubordinateCACertificate_PathLen0/V1 \ --validity Value=3651,Type=DAYS # Store the Subordinate CA certificate ARN from the previous output SUB_CA_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<sub-ca-authority-id>" # 9. Retrieve Subordinate CA Certificate aws acm-pca get-certificate \ --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \ --certificate-arn $SUB_CA_ARN \ --query 'Certificate' \ --output text > intermediateCA.crt # 10. Import the Subordinate CA Certificate aws acm-pca import-certificate-authority-certificate \ --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \ --certificate fileb://intermediateCA.crt \ --certificate-chain fileb://customerRootCA.crt

証明書をチェーンファイルに結合します。

$ cat intermediateCA.crt customerRootCA.crt > chainCA.crt -----BEGIN CERTIFICATE----- [Intermediate CA] -----END CERTIFICATE----- ... ... -----BEGIN CERTIFICATE----- [Root CA] -----END CERTIFICATE-----

AWS PCA を使用してクラスター CSR に署名します。

$ aws acm-pca issue-certificate \ --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \ --csr fileb://<cluster ID>_ClusterCsr.csr \ --signing-algorithm SHA256WITHRSA \ --template-arn arn:aws:acm-pca:::template/EndEntityCertificate/V1 \ --validity Value=3650,Type=DAYS # Store your cluster's cert ARN from the previous output CLUSTER_CERT_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<cluster-cert-arn>"

署名付きクラスター証明書をダウンロードします。

$ aws acm-pca get-certificate \ --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \ --certificate-arn $CLUSTER_CERT_ARN \ --output text --query Certificate > <cluster ID>_CustomerHsmCertificate.crt

完了すると、このコマンドは <cluster ID>_CustomerHsmCertificate.crt という名前のファイルを作成します。クラスターを初期化する際は、これを署名済み証明書として使用します。

署名付き証明書を証明書チェーンと照合します (オプション)。

$ openssl verify -purpose sslserver -CAfile chainCA.crt <cluster ID>_CustomerHsmCertificate.crt <cluster ID>_CustomerHsmCertificate.crt: OK

中間 CA を使用して署名付き HSM 証明書を生成したら、「」に進みますステップ 4. クラスターの初期化

ステップ 4. クラスターの初期化

署名済み HSM 証明書と署名証明書を使用して、クラスターを初期化します。AWS CloudHSM コンソールAWS CLI、または AWS CloudHSM API を使用できます。

Console
クラスターを初期化するには (コンソール)
  1. https://console.aws.amazon.com/cloudhsm/home で AWS CloudHSM コンソールを開きます。

  2. 検証する HSM のクラスター ID の横にあるラジオボタンをオンにします。

  3. アクション を選択します。ドロップダウンメニューから 初期化 を選択します。

  4. HSM を作成する 前のステップ を完了していない場合は、作成する HSM のアベイラビリティーゾーン (AZ) を選択します。次に、作成 を選択します。

  5. [Download certificate signing request] ページで、[Next] を選択します。[Next] が利用できない場合は、最初にいずれかの CSR または証明書のリンクを選択します。次いで、[次へ] を選択します。

  6. [Sign certificate signing request (CSR)] ページで、[Next] を選択します。

  7. [Upload the certificates] ページで、以下の作業を行います。

    1. [Cluster certificate (クラスター証明書)] の横にある [Upload file (ファイルのアップロード)] を選択します。先に署名した HSM 証明書を探し選択します。前のセクションのステップを完了したら、<cluster ID>_CustomerHsmCertificate.crt という名前のファイルを選択します。

    2. [証明書の発行] の横にある [ファイルのアップロード] を選択します。次に、選択したアプローチに基づいて署名証明書を選択します。

      • オプション A (単一の自己署名証明書) を選択した場合: という名前のファイルを選択します。 <customerRootCA>.crt

      • オプション B (証明書チェーン): という名前のファイルを選択します。 <chainCA>.crt

    3. [Upload and initialize] を選択します。

AWS CLI
クラスターを初期化するには (AWS CLI)
  • コマンドラインプロンプトで、initialize-cluster コマンドを実行します。以下を指定します。

    • 前に作成したクラスターの ID。

    • 前に署名した HSM 証明書。前のセクションのステップを完了すると、<cluster ID>_CustomerHsmCertificate.crt というファイル名で保存されています。

    • 選択した方法に基づいて証明書に署名します。

      • オプション A (単一の自己署名証明書): という名前のファイルを使用する <customerRootCA>.crt

      • オプション B (証明書チェーン): という名前のファイルを使用します。 <chainCA>.crt

    $ aws cloudhsmv2 initialize-cluster --cluster-id <cluster ID> \ --signed-cert file://<cluster ID>_CustomerHsmCertificate.crt \ --trust-anchor file://<customerRootCA.crt OR chainCA.crt> { "State": "INITIALIZE_IN_PROGRESS", "StateMessage": "Cluster is initializing. State will change to INITIALIZED upon completion." }
AWS CloudHSM API
クラスターを初期化するには (AWS CloudHSM API)
  • 以下を使用して InitializeCluster リクエストを送信します。

    • 前に作成したクラスターの ID。

    • 前に署名した HSM 証明書。前のセクションのステップを完了すると、<cluster ID>_CustomerHsmCertificate.crt というファイル名で保存されています。

    • 選択した方法に基づいて証明書に署名します。

      • オプション A (単一の自己署名証明書): という名前のファイルを使用する <customerRootCA>.crt

      • オプション B (証明書チェーン): という名前のファイルを使用します。 <chainCA>.crt