証明書失効リスト (CRL) の計画 - AWS Private Certificate Authority

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

証明書失効リスト (CRL) の計画

CA 作成プロセスの一環として CRL を設定する前に、事前設定が必要な場合があります。このセクションでは、CRL が添付された CA を作成する前に理解しておくべき前提条件とオプションについて説明します。

CRL の代替または補足としてオンライン証明書ステータスプロトコル (OCSP) を使用する方法については、「証明書失効オプション」および「AWS Private CA OCSP 用のカスタム URL の設定」を参照してください。

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 に保管されます。それ以前は、Amazon S3 バケットに表示される acm-pca-permission-test-key ファイルのみが存在します。

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

CRL を作成する場合は、Amazon S3 バケットを に保存するように準備する必要があります。指定した Amazon S3 バケットに CRL AWS Private CA を自動的に預金し、定期的に更新します。詳細については、「バケットの作成」を参照してください。

S3 バケットは、アタッチされた IAM アクセス許可ポリシーによって保護されている必要があります。権限のあるユーザーとサービスプリンシパルには、 AWS Private CA にバケットへのオブジェクトの配置を許可する Put 権限と、そのオブジェクトを取得する Get 権限が必要です。CA を作成するコンソール手順中に、 で新しいバケット AWS Private CA を作成し、デフォルトのアクセス許可ポリシーを適用することを選択できます。

注記

IAM ポリシーの設定は、 AWS リージョン 関係する によって異なります。リージョンは次の 2 つのカテゴリに分類されます。

  • デフォルトが有効なリージョン – すべての でデフォルトで有効になっているリージョン AWS アカウント。

  • デフォルト無効リージョン — デフォルトでは無効になっているが、ユーザーが手動で有効にできるリージョン。

デフォルトが無効になっているリージョンの詳細とリストについては、「 の管理 AWS リージョン」を参照してください。IAM のコンテキストにおけるサービスプリンシパルの説明については、「オプトインリージョンのAWS サービスプリンシパル」を参照してください。

CRLs を証明書失効メソッドとして設定すると、 は CRL AWS Private CA を作成し、S3 バケットに発行します。S3 バケットには、 AWS Private CA サービスプリンシパルにバケットへの書き込みを許可する IAM ポリシーが必要です。サービスプリンシパルの名前は使用するリージョンによって異なり、すべてのオプションがサポートされているわけではありません。

PCA S3 サービスプリンシパル

どちらも同じリージョンにあります。

acm-pca.amazonaws.com

有効

有効

acm-pca.amazonaws.com

無効 有効

acm-pca.Region.amazonaws.com

有効 無効

サポートされていません

デフォルトポリシーでは CA に SourceArn 制限は適用されません。以下に示す許可の少ないポリシーを手動で適用することをお勧めします。これにより、特定の AWS アカウントと特定のプライベート CA の両方へのアクセスが制限されます。詳細については、「Amazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。

{ "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:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition":{ "StringEquals":{ "aws:SourceAccount":"account", "aws:SourceArn":"arn:partition:acm-pca:region:account:certificate-authority/CA_ID" } } } ] }

デフォルトポリシーを許可することを選択した場合は、後でいつでも変更できます。

で S3 ブロックパブリックアクセス (BPA) を有効にする CloudFront

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

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

注記

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

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

BPA を使用して Amazon S3 を設定する

S3 で、通常どおり CRL 用の新しいバケットを作成し、そのバケットで BPA を有効にします。

CRL へのパブリックアクセスをブロックする Amazon S3 バケットを設定するには
  1. バケットの作成」の手順を使用して、新しい S3 バケットを作成します。手順の実行時、「すべてのパブリックアクセスをブロック」オプションを選択します。

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

  2. バケットが作成されたら、リストから名前を選択し、[権限] タブに移動し、[オブジェクト所有権] セクションで [編集] を選択し、[優先バケット所有者] を選択します。

  3. [権限] タブでも、Amazon S3 の CRL のアクセスポリシー で説明されているように IAM ポリシーをバケットに追加します。

BPA CloudFront のセットアップ

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

CRL の CloudFront ディストリビューションを設定するには
  1. CloudFront 「Amazon CloudFront デベロッパーガイド」の「ディストリビューションの作成」の手順を使用して、新しいディストリビューションを作成します。

    手順を完了する際、以下の設定を適用します。

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

    • [バケットアクセスの制限] で、[はい] を選択します。

    • [オリジンアクセスアイデンティティ][新しいアイデンティティを作成] を選択します。

    • [バケットへの読み取り権限の付与][はい、バケットポリシーを更新します] を選択します。

      注記

      この手順では、 はバケットポリシー CloudFront を変更して、バケットオブジェクトへのアクセスを許可します。このポリシーを編集して、crl フォルダ内のオブジェクトにのみアクセスを許可することも検討してください。

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

    注記

    S3 バケットが us-east-1 以外のリージョンで新しく作成された場合、 を介して公開されたアプリケーションにアクセスすると、HTTP 307 一時リダイレクトエラーが発生することがあります CloudFront。バケットのアドレスが反映されるまでに数時間かかることがあります。

BPA 用に CA を設定する

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

の CNAME を使用して CA を設定するには CloudFront
  • CA を作成するための手順 (CLI) を使用して CA を作成します。

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

    "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 バケットで暗号化を設定できます。 は、Amazon S3 のアセットに対して 2 つの暗号化モード AWS Private CA をサポートしています。 CRLs

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

  • AWS Key Management Service および仕様に AWS KMS key 設定された を使用したカスタマーマネージド暗号化。

注記

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

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

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

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

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

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

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

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

  5. [Enable(有効化)] を選択します。

  6. [Amazon S3 キー (SSE-S3)] を選択します。

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

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

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

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

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

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

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

  5. [Enable(有効化)] を選択します。

  6. AWS Key Management Service キー (SSE-KMS) を選択します。

  7. AWS KMS キーから選択するか、ARN AWS KMS key を入力します

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

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

    $ aws kms create-key

    出力には、KMS キーのキー ID と Amazon リソースネーム (ARN) が含まれます。以下は、その出力例です。

    { "KeyMetadata": { "KeyId": "01234567-89ab-cdef-0123-456789abcdef", "Description": "", "Enabled": true, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/01234567-89ab-cdef-0123-456789abcdef", "AWSAccountId": "123456789012" } }
  10. 次の手順を使用して、KMS キーを使用するアクセス許可を AWS Private CA サービスプリンシパルに付与します。デフォルトでは、すべての KMS キーがプライベートです。リソース所有者だけが KMS キーを使用してデータを暗号化および復号できます。ただし、リソース所有者は、他のユーザーとリソースに KMS キーへのアクセス許可を付与することができます。サービスプリンシパルは、KMS キーが保存されているのと同じリージョンにある必要があります。

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

      $ aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json
    2. テキストエディタで policy.json ファイルを開きます。次のポリシーステートメントのいずれかを選択し、既存のポリシーに追加します。

      Amazon S3 バケットキーが有効になっている場合は、次のステートメントを使用してください。

      { "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" } } }

      Amazon S3 バケットキーが無効になっている場合は、次のステートメントを使用してください。

      { "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

CRL ディストリビューションポイント (CDP) URI の確認

CA の CDP として S3 バケットを使用する場合、CDP URI は次の形式のいずれかになります。

  • http://DOC-EXAMPLE-BUCKET.s3.region-code.amazonaws.com/crl/CA-ID.crl

  • http://s3.region-code.amazonaws.com/DOC-EXAMPLE-BUCKET/crl/CA-ID.crl

CA にカスタム CNAME を設定した場合、CDP URI には CNAME が含まれます。例えば、 http://alternative.example.com/crl/CA-ID.crl