

# トラストストアと証明書の管理
<a name="trust-stores-certificate-management"></a>

トラストストアの作成と設定は、CloudFront との相互 TLS 認証を実装するための必須要件です。トラストストアには、認証プロセス中に CloudFront がクライアント証明書を検証するために使用する認証局 (CA) の証明書が含まれています。

## トラストストアとは
<a name="what-is-trust-store"></a>

トラストストアは、相互 TLS 認証中に CloudFront がクライアント証明書を検証するために使用する CA 証明書のリポジトリです。トラストストアには、クライアント証明書を認証するための信頼チェーンを形成するルート CA 証明書と中間 CA 証明書が含まれています。

CloudFront で相互 TLS を実装する場合、トラストストアは、有効なクライアント証明書を発行するために信頼する認証局を定義します。CloudFront は、TLS ハンドシェイク中に各クライアント証明書と信頼ストアを照合します。トラストストアのいずれかの CA にチェーンされる証明書を提示するクライアントのみが、正常に認証されます。

CloudFront のトラストストアは、複数のディストリビューションに関連付けることができるアカウントレベルのリソースです。これにより、CA 証明書の管理を簡素化しながら、CloudFront のデプロイ全体で整合性のある証明書検証ポリシーを維持できます。

## 認証局のサポート
<a name="ca-support"></a>

CloudFront は、AWS プライベート認証局とサードパーティーのプライベート認証局の両方によって発行された証明書をサポートします。この柔軟性により、組織の要件に基づいて、既存の証明書インフラストラクチャを使用したり、AWS マネージド証明書サービスを活用したりできます。
+ **AWS プライベート認証局:** マネージドプライベート認証局サービスを提供する AWS プライベート CA によって発行された証明書を使用できます。この統合により、証明書のライフサイクル管理が簡素化され、他の AWS サービスとシームレスに統合できます。
+ **サードパーティーのプライベート認証局:** エンタープライズ CA や他のサードパーティーの証明書プロバイダーを含め、既存のプライベート認証局インフラストラクチャからの証明書を使用することもできます。これにより、CloudFront の mTLS 機能を追加しながら、現在の証明書管理プロセスを維持できます。

## 証明書の要件と仕様
<a name="certificate-requirements"></a>

トラストストアには、含められる CA 証明書に特定の要件があります。

### CA 証明書形式の要件
<a name="ca-cert-format-requirements"></a>
+ **形式:** PEM (Privacy Enhanced Mail) 形式
+ **コンテンツの境界:** 証明書は -----BEGIN CERTIFICATE----- と -----END CERTIFICATE----- の境界で囲まれている必要があります
+ **コメント:** 先頭に \$1 を付け、- 文字を含めることはできません
+ **改行:** 証明書間に空白行は許可されていません

### サポートされている証明書の仕様
<a name="supported-cert-specs"></a>
+ **証明書タイプ:** X.509v3
+ **パブリックキーのタイプ:**
  + RSA 2048、RSA 3072、RSA 4096
  + ECDSA: secp256r1、secp384r1
+ **署名アルゴリズム:**
  + SHA256, SHA384, SHA512 with RSA
  + SHA256, SHA384, SHA512 with EC
  + SHA256, SHA384, SHA512 with RSASSA-PSS with MGF1

### 証明書バンドル形式の例
<a name="example-cert-bundle"></a>

複数の証明書 (PEM エンコード):

```
# Root CA Certificate
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKoK/OvD/XqiMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTcwNzEyMTU0NzQ4WhcNMjcwNzEwMTU0NzQ4WjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAuuExKvY1xzHFylsHiuowqpmzs7rEcuuylOuEszpFp+BtXh0ZuEtts9LP
-----END CERTIFICATE-----
# Intermediate CA Certificate
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKoK/OvD/XqjMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTcwNzEyMTU0NzQ4WhcNMjcwNzEwMTU0NzQ4WjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAuuExKvY1xzHFylsHiuowqpmzs7rEcuuylOuEszpFp+BtXh0ZuEtts9LP
-----END CERTIFICATE-----
```

## トラストストアを作成する
<a name="create-trust-store"></a>

トラストストアを作成する前に、CA 証明書バンドルを PEM 形式で Amazon S3 バケットにアップロードする必要があります。証明書バンドルには、クライアント証明書の検証に必要な信頼されるルート CA 証明書と中間 CA 証明書がすべて含まれている必要があります。

CA 証明書バンドルは、トラストストアを作成するときに S3 から 1 回だけ読み取られます。今後、CA 証明書バンドルが変更される場合は、トラストストアを手動で更新する必要があります。トラストストアと S3 CA 証明書バンドル間の同期は維持されません。

### 前提条件
<a name="trust-store-prerequisites"></a>
+ Amazon S3 バケットにアップロードされた認証局 (CA) からの証明書バンドル
+ CloudFront リソースを作成するために必要なアクセス許可

### トラストストアを作成するには (コンソール)
<a name="create-trust-store-console"></a>

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで **[トラストストア]** を選択します。

1. **[トラストストアを作成]** を選択します。

1. **[トラストストアの名前]** に、トラストストアの名前を入力します。

1. **[認証局 (CA) バンドル]** に、PEM 形式の CA 証明書バンドルへの Amazon S3 パスを入力します。

1. **[トラストストアを作成]** を選択します。

### トラストストアを作成するには (AWS CLI)
<a name="create-trust-store-cli"></a>

```
aws cloudfront create-trust-store \
  --name MyTrustStore \
  --ca-certificates-bundle-source '{"CaCertificatesBundleS3Location":{"Bucket":"my-bucket","Key":"ca-bundle.pem","Region":"bucket-region"}}' \
  --tags Items=[{Key=Environment,Value=Production}]
```

## トラストストアをディストリビューションに関連付ける
<a name="associate-trust-store"></a>

トラストストアを作成した後、相互 TLS 認証を有効にするために CloudFront ディストリビューションに関連付ける必要があります。

### 前提条件
<a name="associate-prerequisites"></a>
+ HTTPS のみのビューワープロトコルポリシーが有効で、HTTP3 サポートが無効になっている既存の CloudFront ディストリビューション。

### トラストストアを関連付けるには (コンソール)
<a name="associate-trust-store-console"></a>

CloudFront コンソール内でトラストストアを関連付けるには、トラストストアの詳細ページから、またはディストリビューション設定ページからの 2 つの方法があります。

**トラストストアの詳細ページを介したトラストストアの関連付け:**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで **[トラストストア]** を選択します。

1. 関連付けるトラストストアの名前を選択します。

1. **[ディストリビューションに関連付ける]** を選択します。

1. 使用可能なビューワーの mTLS オプションを設定します。
   + **クライアント証明書の検証モード:** 必須モードとオプションモードから選択します。必須モードでは、すべてのクライアントが証明書を提示する必要があります。オプションモードでは、証明書を提示するクライアントは検証され、証明書を提示しないクライアントにはアクセスが許可されます。
   + **トラストストア CA 名をアドバタイズする:** TLS ハンドシェイク中にトラストストアの CA 名をクライアントにアドバタイズするかどうかを選択します。
   + **証明書の有効期限を無視する:** 有効期限が切れた証明書を使用した接続を許可するかどうかを選択します (他の検証基準も適用されます)。
   + **Connection Function:** オプションの Connection Function を関連付けて、他のカスタム条件に基づいて接続を許可/拒否できます。

1. トラストストアに関連付ける 1 つ以上のディストリビューションを選択します。ビューワー mTLS をサポートできるのは、HTTP3 が無効になっているディストリビューションと HTTPS のみのキャッシュ動作を持つディストリビューションのみです。

1. **関連付ける** を選択してください。

**ディストリビューション設定のページからのトラストストアの関連付け:**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 関連付けるディストリビューションを選択します。

1. **[全般]** タブの **[設定]** コンテナで、右上の **[編集]** を選択します。

1. ページを最下部までスクロールし、**[接続]** コンテナ内で **[ビューワーの mTLS]** スイッチをオンに切り替えます。

1. 使用可能なビューワーの mTLS オプションを設定します。
   + **クライアント証明書の検証モード:** 必須モードとオプションモードから選択します。必須モードでは、すべてのクライアントが証明書を提示する必要があります。オプションモードでは、証明書を提示するクライアントは検証され、証明書を提示しないクライアントにはアクセスが許可されます。
   + **トラストストア CA 名をアドバタイズする:** TLS ハンドシェイク中にトラストストアの CA 名をクライアントにアドバタイズするかどうかを選択します。
   + **証明書の有効期限を無視する:** 有効期限が切れた証明書を使用した接続を許可するかどうかを選択します (他の検証基準も適用されます)。
   + **Connection Function:** オプションの Connection Function を関連付けて、他のカスタム条件に基づいて接続を許可/拒否できます。

1. 右下の **[変更の保存]** を選択します。

### トラストストアを関連付けるには (AWS CLI)
<a name="associate-trust-store-cli"></a>

トラストストアは、DistributionConfig.ViewerMtlsConfig プロパティを介してディストリビューションに関連付けることができます。つまり、まずディストリビューション設定を取得し、後続の UpdateDistribution リクエストで ViewerMtlsConfig を指定する必要があります。

```
// First fetch the distribution
aws cloudfront get-distribution {DISTRIBUTION_ID}

// Update the distribution config, for example:
Distribution config, file://distConf.json: 
{
  ...other fields,
  ViewerMtlsConfig: {
    Mode: 'required',
    TrustStoreConfig: {
        AdvertiseTrustStoreCaNames: false,
        IgnoreCertificateExpiry: true,
        TrustStoreId: {TRUST_STORE_ID}
    }
  }
}

aws cloudfront update-distribution \
   --id {DISTRIBUTION_ID} \
   --if-match {ETAG} \
   --distribution-config file://distConf.json
```

## トラストストアを管理する
<a name="manage-trust-stores"></a>

### トラストストアの詳細を表示する
<a name="view-trust-store-details"></a>

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで **[トラストストア]** を選択します。

1. トラストストアの名前を選択して、詳細ページを表示します。

詳細ページには以下が表示されます。
+ トラストストアの名前と ID
+ CA 証明書の数
+ 作成日と最後に変更された日付
+ 関連付けられたディストリビューション
+ タグ

### トラストストアを変更する
<a name="modify-trust-store"></a>

CA 証明書バンドルを置き換えるには

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで **[トラストストア]** を選択します。

1. トラストストアの名前を選択します。

1. **[アクション]**、**[編集]** の順に選択します。

1. **認証局 (CA) バンドル**の場合、更新された CA バンドル PEM ファイルの Amazon S3 の場所を入力します。

1. **[トラストストアを更新]** を選択します。

### トラストストアを削除する
<a name="delete-trust-store"></a>

**前提条件:** まず、すべての CloudFront ディストリビューションからトラストストアの関連付けを解除する必要があります。

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで **[トラストストア]** を選択します。

1. トラストストアの名前を選択します。

1. **[トラストストアを削除]** を選択します。

1. [**Delete**] を選択して確定します。

### 次のステップ
<a name="trust-store-next-steps"></a>

トラストストアを作成して CloudFront ディストリビューションに関連付けると、ディストリビューションで相互 TLS 認証を有効にし、証明書ヘッダーをオリジンに転送するなどの追加設定を行うことができます。ディストリビューションで mTLS を有効にする詳細な手順については、「[CloudFront ディストリビューションの相互 TLS を有効にする](enable-mtls-distributions.md)」を参照してください。