

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 信任存放區和憑證管理
<a name="trust-stores-certificate-management"></a>

建立和設定信任存放區是使用 CloudFront 實作交互 TLS 身分驗證的必要要求。信任存放區包含 CloudFront 在身分驗證程序期間用來驗證用戶端憑證的憑證授權機構 (CA) 憑證。

## 什麼是信任存放區？
<a name="what-is-trust-store"></a>

信任存放區是 CA 憑證的儲存庫，CloudFront 會使用此儲存庫在交互 TLS 身分驗證期間驗證用戶端憑證。信任存放區包含根 CA 憑證和中繼 CA 憑證，這些憑證構成用於驗證用戶端憑證的信任鏈。

當您使用 CloudFront 實作交互 TLS 時，信任存放區會定義您信任哪些憑證授權機構來發行有效的用戶端憑證。CloudFront 會在 TLS 交握期間，針對您的信任存放區驗證每個用戶端憑證。只有呈現連結至信任存放區中其中一個 CAs 的憑證的用戶端才會成功驗證。

CloudFront 中的信任存放區是可與多個分佈建立關聯的帳戶層級資源。這可讓您在整個 CloudFront 部署中維持一致的憑證驗證政策，同時簡化 CA 憑證管理。

## 憑證授權單位支援
<a name="ca-support"></a>

CloudFront 支援 AWS 私有憑證授權單位和第三方私有憑證授權單位發行的憑證。此彈性可讓您根據您的組織需求，使用現有的憑證基礎設施或利用 AWS 受管憑證服務。
+ **AWS 私有憑證授權機構：**您可以使用 AWS Private CA 發行的憑證，該憑證提供受管私有憑證授權機構服務。此整合可簡化憑證生命週期管理，並提供與其他 AWS 服務的無縫整合。
+ **第三方私有憑證授權機構：**您也可以使用現有私有憑證授權機構基礎設施的憑證，包括企業 CAs 或其他第三方憑證提供者。這可讓您維護目前的憑證管理程序，同時新增 CloudFront 的 mTLS 功能。

## 憑證需求和規格
<a name="certificate-requirements"></a>

信任存放區對其包含的 CA 憑證有特定要求：

### CA 憑證格式要求
<a name="ca-cert-format-requirements"></a>
+ **格式：**PEM （隱私權增強郵件） 格式
+ **內容界限：**憑證必須括在 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 邊界內
+ **註解：**必須以 \# 字元開頭，且不能包含任何 - 字元
+ **換行：**憑證之間不允許空白行

### 支援的憑證規格
<a name="supported-cert-specs"></a>
+ **憑證類型：**X.509v3
+ **公有金鑰類型：**
  + RSA 2048、RSA 3072、RSA 4096
  + ECDSA：secp256r1、secp384r1
+ **簽章演算法：**
  + SHA256, SHA384, SHA512搭配 RSA
  + SHA256, SHA384, SHA512搭配 EC
  + SHA256, SHA384, SHA512搭配 RSASSA-PSS 搭配 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>

建立信任存放區之前，您必須將 PEM 格式的 CA 憑證套件上傳至 Amazon S3 儲存貯體。憑證套件應包含驗證用戶端憑證所需的所有信任根憑證和中繼 CA 憑證。

建立信任存放區時，CA 憑證套件只會從 S3 讀取一次。如果未來變更 CA 憑證套件，則必須手動更新信任存放區。信任存放區和 S3 CA 憑證套件之間不會保留同步。

### 先決條件
<a name="trust-store-prerequisites"></a>
+ 從您的憑證授權機構 (CA) 上傳到 Amazon S3 儲存貯體的憑證套件
+ 建立 CloudFront 資源的必要許可

### 建立信任存放區 （主控台）
<a name="create-trust-store-console"></a>

1. 登入 AWS 管理主控台 並開啟位於 的 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

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>

建立信任存放區之後，您必須將其與 CloudFront 分佈建立關聯，才能啟用交互 TLS 身分驗證。

### 先決條件
<a name="associate-prerequisites"></a>
+ 已啟用僅 HTTPS 檢視器通訊協定政策且 HTTP3 支援已停用的現有 CloudFront 分佈。

### 建立信任存放區的關聯 （主控台）
<a name="associate-trust-store-console"></a>

CloudFront 主控台中的信任存放區有兩種關聯方式：透過信任存放區詳細資訊頁面或透過分佈設定頁面。

**透過信任存放區詳細資訊頁面關聯信任存放區：**

1. 登入 AWS 管理主控台 並開啟位於 的 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在導覽窗格中，選擇**信任存放**區。

1. 選擇您要關聯的信任存放區名稱。

1. 選擇**關聯以分佈**。

1. 設定可用的檢視器 mTLS 選項：
   + **用戶端憑證驗證模式：**選擇必要和選用模式。在必要模式下，所有用戶端都需要呈現憑證。在選用模式中，會驗證呈現憑證的用戶端，而未呈現憑證的用戶端則允許存取。
   + **公告信任存放區 CA 名稱：**選擇是否要在 TLS 交握期間將信任存放區中的 CA 名稱公告給用戶端。
   + **忽略憑證過期日期：**選擇是否允許憑證過期的連線 （其他驗證條件仍適用）。
   + **連線函數：**選用的連線函數可以建立關聯，以根據其他自訂條件允許/拒絕連線。

1. 選取要與信任存放區建立關聯的一或多個分佈。只有停用 HTTP3 且具有僅限 HTTPS 快取行為的分佈，才能支援檢視器 mTLS。

1. 選擇**關聯**。

**透過分佈設定頁面關聯信任存放區：**

1. 登入 AWS 管理主控台 並開啟位於 的 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 選取您要關聯的分佈

1. 在**一般**索引標籤下方的**設定**容器中，選擇右上角的**編輯** 

1. 向下捲動至頁面底部，在**連線**容器中切換**檢視器 mTLS** 開啟

1. 設定可用的檢視器 mTLS 選項：
   + **用戶端憑證驗證模式：**選擇必要和選用模式。在必要模式下，所有用戶端都需要呈現憑證。在選用模式中，會驗證呈現憑證的用戶端，而未呈現憑證的用戶端則允許存取。
   + **公告信任存放區 CA 名稱：**選擇是否要在 TLS 交握期間將信任存放區中的 CA 名稱公告給用戶端。
   + **忽略憑證過期日期：**選擇是否允許憑證過期的連線 （其他驗證條件仍適用）。
   + **連線函數：**選用的連線函數可以建立關聯，以根據其他自訂條件允許/拒絕連線。

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 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在導覽窗格中，選擇**信任存放**區。

1. 選擇信任存放區的名稱以檢視其詳細資訊頁面。

詳細資訊頁面顯示：
+ 信任存放區名稱和 ID
+ CA 憑證數量
+ 建立日期和上次修改日期
+ 關聯的分佈
+ Tags (標籤)

### 修改信任存放區
<a name="modify-trust-store"></a>

若要取代 CA 憑證套件：

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在導覽窗格中，選擇**信任存放**區。

1. 選擇信任存放區的名稱。

1. 選擇**動作**，然後選擇**編輯**。

1. 針對**憑證授權單位 (CA) 套件**，輸入更新後的 CA 套件 PEM 檔案的 Amazon S3 位置。

1. 選擇**更新信任存放區**。

### 刪除信任存放區
<a name="delete-trust-store"></a>

**先決條件：**您必須先取消信任存放區與所有 CloudFront 分佈的關聯。

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在導覽窗格中，選擇**信任存放**區。

1. 選擇信任存放區的名稱。

1. 選擇**刪除信任存放區**。

1. 選擇**刪除**以確認刪除。

### 後續步驟
<a name="trust-store-next-steps"></a>

在建立信任存放區並將其與 CloudFront 分發建立關聯之後，您可以繼續在分發上啟用交互 TLS 身分驗證，並設定其他設定，例如將憑證標頭轉送至原始伺服器。如需在 分佈上啟用 mTLS 的詳細說明，請參閱 [為 CloudFront 分佈啟用交互 TLS](enable-mtls-distributions.md)。