プライベート CA の作成と設定 - AWS Certificate Manager Private Certificate Authority

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

プライベート CA の作成と設定

このセクションでは、ACM プライベート CA を使用して、オプションの証明書失効リスト (CRL) を使用するプライベート認証機関 (CA) を作成する方法について説明します。これらの手順に従って、ルート CA と下位 CA の両方を作成し、組織のニーズに合った信頼関係のある監査可能な階層を作成できます。

CA を使用してユーザー、デバイス、アプリケーションのエンドエンティティ証明書に署名する方法については、」プライベートエンドエンティティ証明書の発行

注記

アカウントを作成した時点で、各プライベート CA の月額料金が課金されます。

CRL 構造

各 CRL は、DER でエンコードされたファイルです。ファイルをダウンロードし、OpenSSL を使用して表示するには、次のコマンドを使用します。

openssl crl -inform DER -in path-to-crl-file -text -noout

CRL の形式は次のとおりです。

Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: /C=US/ST=WA/L=Seattle/O=Example Company CA/OU=Corporate/CN=www.example.com Last Update: Feb 26 19:28:25 2018 GMT Next Update: Feb 26 20:28:25 2019 GMT CRL extensions: X509v3 Authority Key Identifier: keyid:AA:6E:C1:8A:EC:2F:8F:21:BC:BE:80:3D:C5:65:93:79:99:E7:71:65 X509v3 CRL Number: 1519676905984 Revoked Certificates: Serial Number: E8CBD2BEDB122329F97706BCFEC990F8 Revocation Date: Feb 26 20:00:36 2018 GMT CRL entry extensions: X509v3 CRL Reason Code: Key Compromise Serial Number: F7D7A3FD88B82C6776483467BBF0B38C Revocation Date: Jan 30 21:21:31 2018 GMT CRL entry extensions: X509v3 CRL Reason Code: Key Compromise Signature Algorithm: sha256WithRSAEncryption 82:9a:40:76:86:a5:f5:4e:1e:43:e2:ea:83:ac:89:07:49:bf: c2:fd:45:7d:15:d0:76:fe:64:ce:7b:3d:bb:4c:a0:6c:4b:4f: 9e:1d:27:f8:69:5e:d1:93:5b:95:da:78:50:6d:a8:59:bb:6f: 49:9b:04:fa:38:f2:fc:4c:0d:97:ac:02:51:26:7d:3e:fe:a6: c6:83:34:b4:84:0b:5d:b1:c4:25:2f:66:0a:2e:30:f6:52:88: e8:d2:05:78:84:09:01:e8:9d:c2:9e:b5:83:bd:8a:3a:e4:94: 62:ed:92:e0:be:ea:d2:59:5b:c7:c3:61:35:dc:a9:98:9d:80: 1c:2a:f7:23:9b:fe:ad:6f:16:7e:22:09:9a:79:8f:44:69:89: 2a:78:ae:92:a4:32:46:8d:76:ee:68:25:63:5c:bd:41:a5:5a: 57:18:d7:71:35:85:5c:cd:20:28:c6:d5:59:88:47:c9:36:44: 53:55:28:4d:6b:f8:6a:00:eb:b4:62:de:15:56:c8:9c:45:d7: 83:83:07:21:84:b4:eb:0b:23:f2:61:dd:95:03:02:df:0d:0f: 97:32:e0:9d:38:de:7c:15:e4:36:66:7a:18:da:ce:a3:34:94: 58:a6:5d:5c:04:90:35:f1:8b:55:a9:3c:dd:72:a2:d7:5f:73: 5a:2c:88:85
注記

CRL は、それを参照する証明書が発行された後にのみ Amazon S3 に保管されます。それ以前は、acm-pca-permission-test-keyAmazon S3 バケットに表示される。

Amazon S3 の CRL へのアクセスポリシー

CRL を作成する予定の場合は、保存する Amazon S3 バケットを準備する必要があります。ACM プライベート CA は、指定した Amazon S3 バケットに CRL を自動的に保管し、定期的に更新します。詳細については、「」を参照してください。バケットを作成しますか?

S3 バケットは、アタッチされたアクセス権限ポリシーによって保護されている必要があります。このポリシーは、バケットの内容に権限のないユーザーまたはサービスプリンシパルがアクセスするのを防ぎます。CA を作成するコンソール手順では、ACM プライベート CA が新しいバケットを作成してポリシーを自動的に適用できるようにするか、自分で設定したバケットを使用することもできます。その場合、または AWS CLI を使用して CA を作成する場合は、ポリシーを手動でアタッチする必要があります。詳細については、「」を参照してください。Amazon S3 コンソールを使用したバケットポリシーの追加

Amazon S3 バケットを保護するために使用または変更できる 2 つのポリシーの例を示します。

ポリシー 1(制限的)

このポリシーは、S3 バケットに対する制限付きアクセス許可を ACM プライベート CA サービスプリンシパルに付与します。この例では、AWS アカウントとプライベート CA の ARN の両方によって制限されますが、どちらか一方だけを制限するように設定することもできます。-Putアクセス許可は、ACM プライベート CA がバケットにオブジェクトを配置できるようにします。-Getアクセス許可は、バケット内のオブジェクトの取得を許可します。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"acm-pca.amazonaws.com" }, "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::bucket-name/*", "arn:aws:s3:::bucket-name" ], "Condition":{ "StringEquals":{ "aws:SourceAccount":"account", "aws:SourceArn":"arn:partition:acm-pca:region:account:certificate-authority/11111111-2222-3333-4444-555555555555" } } } ] }

ポリシー 2 (パーミッシブ)

このポリシーは、PutおよびGetアクセス許可を、CA またはユーザーによるアクセスを制限せずに ACM プライベート CA サービスプリンシパルに追加します。-Putアクセス許可は、ACM プライベート CA がバケットにオブジェクトを配置できるようにします。-Getアクセス許可は、バケット内のオブジェクトの取得を許可します。バケットを複数の CA または複数のユーザーで使用できるようにする場合は、許可ポリシーが適しています。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"acm-pca.amazonaws.com" }, "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::bucket-name/*", "arn:aws:s3:::bucket-name" ] } ] }

の有効化S3 パブリックアクセスブロック機能

新しい Amazon S3 バケットは、デフォルトでパブリックアクセスをブロック(BPA)機能が有効に設定されています。S3 に含まれるセキュリティのベストプラクティスでは、BPA は S3 バケット内のオブジェクトおよびバケット全体へのアクセスを微調整するために使用できるアクセス制御のセットです。BPA がアクティブで正しく設定されている場合、承認され、認証された AWS ユーザーのみがバケットとその内容にアクセスできます。

AWS では、機密情報が潜在的な敵にさらされないように、すべての S3 バケットで BPA を使用することを推奨しています。ただし、PKI クライアントがパブリックインターネット経由で CRL を取得する場合(つまり、AWS アカウントにログインしていない場合)、追加の計画が必要です。このセクションでは、コンテンツ配信ネットワーク (CDN) である Amazon CloudFront を使用してプライベート PKI ソリューションを設定して、S3 バケットへの認証されたクライアントアクセスを必要とせずに CRL を提供する方法について説明します。

注記

CloudFront を使用すると、AWS アカウントに追加のコストが発生します。詳細については、「Amazon CloudFront の料金」を参照してください。

BPA が有効な S3 バケットに CRL を保存することを選択し、CloudFront を使用しない場合は、別の CDN ソリューションを構築して、PKI クライアントが CRL にアクセスできるようにする必要があります。

S3 のセットアップ

S3 で、CRL 用の新しいバケットを作成します。 いつものようにして、BPAを有効にします。

CRL へのパブリックアクセスをブロックする S3 バケットを設定するには

  1. 「」の手順を使用して、新しい S3 バケットを作成します。バケットの作成。手順の実行中に、ブロックすべてパブリックアクセスオプション。

    詳細については、「」を参照してください。Amazon S3 ストレージへのパブリックアクセスのブロック

  2. バケットが作成されたら、リストから名前を選択し、アクセス許可[] タブで、[編集()オブジェクトの所有権セクションを選択し、バケット所有者優先

  3. 「」も参照してください。アクセス許可タブで、IAM ポリシーをバケットに追加します。詳細については、」Amazon S3 の CRL へのアクセスポリシー

CloudFront のセットアップ

プライベート S3 バケットにアクセスでき、認証されていないクライアントに CRL を提供できる CloudFront ディストリビューションを作成します。

CRL 用の CloudFront ディストリビューションを設定するには

  1. の手順を使用して、新しい CloudFront ディストリビューションを作成します。ディストリビューションの作成()Amazon CloudFront 開発者ガイド

    手順を完了して、次の設定を適用します。

    • Eclipseオリジンドメイン名] で、S3 バケットを選択します。

    • 選択はいforバケットアクセスの制限

    • 選択新しい ID を作成するforオリジンアクセスアイデンティティ

    • 選択はい。バケットポリシーの更新[]バケットに読み取りアクセス許可を付与する

      注記

      この手順では、CloudFront はバケットポリシーを変更し、バケットオブジェクトへのアクセスを許可します。考慮事項編集このポリシーでは、[] の下にあるオブジェクトのみへのアクセスを許可します。crlfolder

  2. ディストリビューションの初期化が完了したら、CloudFront コンソールでドメイン名を特定し、次の手順のために保存します。

    注記

    バケットが us-east-1 以外のリージョンにある場合、CRL が利用可能になるまでに最大 24 時間かかる場合があります。

CA のセットアップ

新しい CA を設定するときに、CloudFront ディストリビューションにエイリアスを含めます。

CloudFront 用の CNAME を使用して CA を設定するには

  • を使用して CA を作成するCA の作成手順(CLI)

    この手順を実行すると、失効ファイルrevoke_config.txtには、非パブリック CRL オブジェクトを指定し、CloudFront のディストリビューションエンドポイントへの URL を提供するために、次の行を含める必要があります。

    "S3ObjectAcl":"BUCKET_OWNER_FULL_CONTROL", "CustomCname":"abcdef012345.cloudfront.net"

    その後、この CA で証明書を発行すると、次のようなブロックが含まれます。

    X509v3 CRL Distribution Points: Full Name: URI:http://abcdef012345.cloudfront.net/crl/01234567-89ab-cdef-0123-456789abcdef.crl
注記

この CA によって発行された古い証明書がある場合、証明書は CRL にアクセスできません。

CRL の暗号化

必要に応じて、CRL を含む Amazon S3 バケットに暗号化を設定できます。ACM プライベート CA は、S3 のアセットに対して 2 つの暗号化モードをサポートしています。

  • Amazon S3 で管理された AES-256 キーを使用したサーバー側の自動暗号化。

  • AWS Key Management Service、およびお客様の使用に合わせて設定されたカスタマーマスターキー (CMK) を使用するカスタマー管理の暗号化。

注記

ACM Private CA は、S3 によって自動的に生成されるデフォルトの CMK の使用をサポートしていません。

次の手順では、各暗号化オプションを設定する方法について説明します。

自動暗号化を設定するには

S3 サーバー側の暗号化を有効にするには、以下のステップを実行します。

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. バケットテーブルで、ACM Private CA アセットを保持するバケットを選択します。

  3. バケットのページで、[プロパティ] タブを選択します。

  4. [デフォルト暗号化] カードを選択します。

  5. [Enable] を選択します。

  6. 選択Amazon S3 キー (SSE-S3)

  7. [変更を保存] をクリックします。

カスタム暗号化を設定するには

カスタムキーを使用して暗号化を有効にするには、以下のステップを実行します。

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. バケットテーブルで、ACM Private CA アセットを保持するバケットを選択します。

  3. バケットのページで、[プロパティ] タブを選択します。

  4. [デフォルト暗号化] カードを選択します。

  5. [Enable] を選択します。

  6. 選択AWS Key Management Service キー (SSE-KMS)

  7. []AWS KMS キーから選択するまたはAWS KMS キー ARN の入力

  8. 設定バケットキーDisable (無効)

  9. [変更を保存] をクリックします。

  10. (オプション) AWS KMS CMK がない場合は、次の AWS CLI を使用して作成します。create-keyコマンド:

    aws kms create-key

    出力には、CMK のキー ID とAmazon リソースネーム (ARN) が含まれます。出力例を次に示します。

    { "KeyMetadata": { "KeyId": "6f815f63-e628-448c-8251-e40cb0d29f59", "Description": "", "Enabled": true, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012" } }
  11. 次のステップを使用して、CMK を使用するアクセス権限を ACM Private CA サービスプリンシパルに付与します。デフォルトでは、すべての AWS KMS CMK がプライベートです。リソース所有者だけが、CMK を使用してデータを暗号化および復号できます。ただし、リソース所有者は、他のユーザーとリソースに CMK へのアクセス権限を付与することができます。サービスプリンシパルは、CMK が保存されているのと同じリージョンにあることが必要です。

    1. まず、get-key-policy コマンドを使用して、CMK のデフォルトポリシーを policy.json として保存します。

      aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json
    2. policy.json ファイルをテキストエディタで開き、次のステートメントを追加します。

      { "Sid":"Allow ACM-PCA use of the key", "Effect":"Allow", "Principal":{ "Service":"acm-pca.amazonaws.com" }, "Action":[ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource":"*", "Condition":{ "StringLike":{ "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::bucket_name/acm-pca-permission-test-key", "arn:aws:s3:::bucket_name/acm-pca-permission-test-key-private", "arn:aws:s3:::bucket_name/audit-report/*", "arn:aws:s3:::bucket_name/crl/*" ] } } }
    3. 最後に、次の put-key-policy コマンドを使用して更新されたポリシーを追加します。

      aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

CA を作成するための手順 (コンソール)

AWS コンソール、AWS CLI の ACM Private CA 部分、または AWS CloudFormation を使用して CA を作成できます。

AWS コンソールを使用してプライベート CA を作成するには

  1. AWS アカウントにサインインし、ACM プライベート CA コンソール (https://console.aws.amazon.com/acm-pca/home。CA を持っていないリージョンでコンソールが開かれた場合、紹介ページが表示されます。選択開始方法プライベート認証機関。もう一度 [今すぐ始める] を選択します。1 つまたは複数の CA があるリージョンでコンソールが開いた場合、紹介ページは表示されません。[プライベート CA] を選択してから、[CA の作成] を選択します

  2. [認証機関 (CA) のタイプの選択]ページで、作成するプライベート認証機関のタイプを選択します。

    • [ルート CA] を選択すると、新しい CA 階層が確立されます。この CA は、自己署名証明書によって認証されています。これは、階層内の他の CA およびエンドエンティティ証明書の最終署名機関として機能します。

    • [下位 CA] を選択すると、階層の上位にある親 CA による署名を必要とする CA が作成されます。下位 CA は通常、他の下位 CA を作成したり、ユーザー、コンピュータ、アプリケーションにエンドエンティティ証明書を発行したりするために使用されます。

      注記

      ACM プライベート CA は、下位の CA の親 CA も ACM プライベート CA によってホストされている場合、自動署名プロセスを提供します。使用する親 CA を選択するだけです。

      下位 CA が外部の署名機関によって署名される場合、ACM プライベート CA は証明書署名要求 (CSR) を提供します。証明書署名要求 (CSR) は、署名付き CA 証明書を取得するためにダウンロードして使用する必要があります。詳細については、「外部の親 CA が署名した下位 CA 証明書をインストールする場合」を参照してください。

    CA タイプを選択した後、[次へ] を選択します。

  3. [認証機関 (CA) の情報カテゴリ名の設定] で、プライベート CA の情報カテゴリ名を設定します。次の値の 1 つ以上を入力する必要があります。

    • 組織 (O)

    • 組織部門 (OU)

    • 国名 (C)

    • 州名/都道府県

    • 市区町村

    • 共通名 (CN)

    認証証明書は自己署名であるため、プライベート CA に提供するカテゴリ情報は、パブリック CA に含まれる情報よりも少ない可能性があります。件名の識別名を構成する各値の詳細については、「X.500 識別名」を参照してください。

    終了したら、[次へ] を選択します。

  4. [ 認証機関 (CA) のキータイプの設定] ページで、キーアルゴリズムとキーのビットサイズを選択します。デフォルト値は、2048 ビットのキー長の RSA アルゴリズムです。[アドバンスト] オプションを展開すると、次のアルゴリズムから選択できます。

    • RSA 2048

    • RSA 4096

    • ECDSA P256

    • ECDSA P384

    選択を行い、[続行] を選択します。

  5. リポジトリの []証明書失効の構成ページでは、ACM Private CA が管理する証明書失効リスト (CRL) を作成するオプションがあります。ウェブブラウザなどのクライアントは、CRL にクエリを実行して、エンドエンティティまたは下位 CA 証明書が信頼できるかどうかを判断します。詳細については、「プライベート証明書の失効」を参照してください。

    CRL を CA に関連付けた場合、ACM プライベート CA は CA が発行した証明書に CRL 配布ポイント拡張機能を含めます。この拡張機能によって CRL への URL が提供され、クライアントデバイスが証明書失効ステータスをチェックできるようになります。

    CRL を作成するには、次のステップを実行します。

    1. [CRL ディストリビューションの有効化] を選択します。

    2. CRL エントリ用の新しい Amazon S3 バケットを作成するには、[はい向けの新しい S3 バケットを作成するオプションを選択し、一意のバケット名を入力します。(バケットへのパスを含める必要はありません)。それ以外の場合は、[いいえ] を選択し、リストから既存のバケットを選択します。

      [] を選択するとはいに設定されている場合、ACM プライベート CA は必要なアクセスポリシーをバケットに追加します。[] を選択するといいえに設定されている場合は、CRL の生成を開始する前に、バケットにポリシーをアタッチする必要があります。で説明されているポリシーパターンのいずれかを使用します。Amazon S3 の CRL へのアクセスポリシー 。ポリシーのアタッチについては、「」を参照してください。S3 バケットポリシーを追加する方法

      注記

      ACM プライベート CA は、次の条件が適用される場合、CA の作成に失敗します。

      • S3 アカウントでパブリックアクセスをブロックする設定を強制しています。

      • ACM プライベート CA に、自動的に S3 バケットを作成するよう依頼しました。

      この場合、ACM プライベート CA コンソールはデフォルトでパブリックにアクセス可能なバケットの作成を試み、S3 はこのアクションを拒否します。このような場合は、Amazon S3 設定を確認してください。詳細については、「」を参照してください。Amazon S3 ストレージへのパブリックアクセスのブロック

    3. 追加の設定オプションを表示するには、[アドバンスト] を展開します。

      • の追加カスタム CRL 名Amazon S3 バケットのエイリアスを作成するために以下を参照してください。この名前は、RFC 5280 で定義されている「CRL 配布ポイント」拡張機能で CA が発行した証明書に含まれています。

      • CRL が有効になる日数を入力します。デフォルト値は 7 日です。オンライン CRL の場合、有効期間として 2~7 日が一般的です。ACM Private CA は、指定された期間の中間時点で、CRL の再生成を試みます。

    [Next] を選択します。

  6. [タグの追加] ページでは、必要に応じて証明書にタグを付けることができます。タグとは、AWS リソースを識別および整理するためのメタデータとして機能するキーと値のペアです。ACM Private CA タグパラメータのリスト、およびCA 作成後にタグを追加する方法については、」プライベート CA へのタグの追加

    [Next] を選択します。

  7. CA のアクセス許可の設定

    必要に応じて、自動更新アクセス許可を ACM サービスプリンシパルに委任します。ACM は、この権限が付与されている場合にのみ、この CA が生成したプライベートエンドエンティティ証明書を自動更新できます。更新の権限は、ACM Private CA を使用して、いつでも割り当てることができます。CreatePermissionAPI または作成権限CLI コマンド。

    デフォルトでは、これらのアクセス許可が有効になっています。

    [Next] を選択します。

  8. リポジトリの []確認と作成ページで、設定が正しいことを確認します。ap-northeast-3 リージョンに CA を作成している場合は、キーストレージセキュリティ標準が FIPS 140-2 レベル 2 以上であることを確認するチェックボックスをオンにします。いずれの場合も、チェックボックスにチェックを入れ、価格情報を確認します。最後に、確認と作成

    CA 証明書の作成とインストールを続行する場合は、開始方法()成功ダイアログボックスを開き、プライベート CA の証明書の作成とインストール。それ以外の場合は、[後で完了する] を選択すると、 [プライベート CA] リストが表示されます。

CA の作成手順(CLI)

create-certificate-authority コマンドを使用して、プライベート CA を作成します。CA 設定、失効設定、および CA タイプを指定する必要があります。この情報は、コマンドの引数として指定する 2 つのファイルに含まれています。必要に応じて、タグと冪等トークンを指定することもできます。

CRL を設定する場合は、セキュリティで保護された Amazon S3 バケットを配置する必要がありますを発行するcreate-certificate-authorityコマンド。詳細については、「Amazon S3 の CRL へのアクセスポリシー 」を参照してください。

CA 設定ファイルには、次の情報が指定されています。

  • アルゴリズムの名前

  • CA プライベートキーの作成に使用されるキーサイズ

  • CA が署名に使用する署名アルゴリズムのタイプ

  • X.500 件名情報

CRL 設定ファイルには、次の情報が指定されています。

  • CRL の有効期間の日数 (CRL の有効期間)

  • CRL を含む Amazon S3 バケット

  • (オプション)S3ObjectAclCRL がパブリックアクセス可能かどうかを判断する値。ここに示す例では、パブリックアクセスがブロックされています。詳細については、「の有効化S3 パブリックアクセスブロック機能」を参照してください。

  • (オプション) CA によって発行された証明書に含まれている S3 バケットの CNAME エイリアス。CRL がパブリックにアクセスできない場合は、Amazon CloudFront などのディストリビューションメカニズムを指す必要があります。

CA の設定と失効の必要に応じて、次のサンプルファイルを修正し、コマンドを実行します。

ファイル:ca_config.txt

{ "KeyAlgorithm":"RSA_2048", "SigningAlgorithm":"SHA256WITHRSA", "Subject":{ "Country":"US", "Organization":"Example Corp", "OrganizationalUnit":"Sales", "State":"WA", "Locality":"Seattle", "CommonName":"www.example.com" } }

ファイル:revoke_config.txt

{ "CrlConfiguration":{ "Enabled":true, "ExpirationInDays":7, "CustomCname":"some_name.crl", "S3BucketName":"your-bucket-name", "S3ObjectAcl":"BUCKET_OWNER_FULL_CONTROL", "CustomCname":"abcdef012345.cloudfront.net" } }

コマンド:

aws acm-pca create-certificate-authority \ --certificate-authority-configuration file://C:\ca_config.txt \ --revocation-configuration file://C:\revoke_config.txt \ --certificate-authority-type "ROOT" \ --idempotency-token 98256344 \ --tags Key=Name,Value=MyPCA

成功すると、このコマンドは、新しい CA の Amazon リソースネーム (ARN) を出力します。

{ "CertificateAuthorityArn":"arn:aws:acm-pca:region:account: certificate-authority/12345678-1234-1234-123456789012" }

AWS CloudFormation を使用した CA の作成

AWS CloudFormation を使用してプライベート CA を作成する方法については、を参照してください。ACM PCA リソースタイプのリファレンス()AWS CloudFormation ユーザーガイド