規劃憑證撤銷清單 (CRL) - AWS Private Certificate Authority

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

規劃憑證撤銷清單 (CRL)

在您可以將 CRL 設定為 CA 建立程序的一部分之前,可能需要先進行一些設定。本節說明在建立附加 CRL 的 CA 之前,您應該瞭解的先決條件和選項。

如需有關使用線上憑證狀態通訊協定 (OCSP) 作為 CRL 的替代方案或補充的資訊,請參閱憑證撤銷選項和。設定 AWS 私有 CA OCSP 的自訂網址

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 儲存貯體以存放該儲存貯體。 AWS 私有 CA 自動將 CRL 存入您指定的 Amazon S3 儲存貯體,並定期更新該儲存貯體。如需詳細資訊,請參閱建立儲存貯體

您的 S3 儲存貯體必須由附加的 IAM 許可政策保護。授權的使用者和服務主體需 AWS 私有 CA 要Put允許將物件放置在值區中的權Get限,以及擷取物件的權限。在建立 CA 的主控台程序期間,您可以選擇允許 AWS 私有 CA 建立新值區並套用預設權限原則。

注意

IAM 政策組態取決於 AWS 區域 涉及的項目。區域分為兩類:

  • 預設啟用的區域 — 預設為所有人啟用的區域。 AWS 帳戶

  • 預設停用區域 — 依預設為用,但客戶可以手動啟用的區域。

如需詳細資訊與預設停用區域的清單,請參閱管理。 AWS 區域如需 IAM 內容中服務主體的討論,請參閱選擇加入區域中的AWS 服務主體

當您將 CRL 設定為憑證撤銷方法時, AWS 私有 CA 會建立 CRL 並將其發佈到 S3 儲存貯體。S3 儲存貯體需要允許 AWS 私有 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) 功能。BPA 包含在 Amazon S3 安全最佳實務中,是一組存取控制,客戶可用來微調 S3 儲存貯體中物件和整個儲存貯體的存取。當 BPA 處於作用中且正確設定時,只有經過授權和驗證的 AWS 使用者才能存取值區及其內容。

AWS 建議在所有 S3 存儲桶上使用 BPA,以避免敏感信息暴露給潛在的對手。不過,如果您的 PKI 用戶端透過公用網際網路 (也就是說,未登入 AWS 帳戶) 擷取 CRL,則需要額外的規劃。本節說明如何使用 Amazon (內容交付網路 (CDN) 設定私有 PKI 解決方案 CloudFront,以提供 CRL,而不需經過驗證的用戶端存取 S3 儲存貯體。

注意

使用 CloudFront 會對您的 AWS 帳戶產生額外費用。如需詳細資訊,請參閱 Amazon CloudFront 定價

如果您選擇將 CRL 存放在已啟用 BPA 的 S3 儲存貯體中,但未使用 CloudFront,則必須建置另一個 CDN 解決方案,以確保 PKI 用戶端能夠存取 CRL。

使用雙酚 A 設置 Amazon S3

在 S3 中,像往常一樣為 CRL 創建一個新存儲桶,然後在其上啟用 BPA。

設定封鎖 CRL 公開存取的 Amazon S3 儲存貯體
  1. 使用建立儲存貯體中的程序建立新的 S3 儲存貯體。在此程序期間,選取 [封鎖所有公用存取] 選項。

    如需詳細資訊,請參閱封鎖 Amazon S3 儲存的公開存取

  2. 建立值區後,請從清單中選擇其名稱,瀏覽至「權限」標籤,在「物件擁有權」區段中選擇「編輯」,然後選取「偏好的值區擁有者」。

  3. 同樣在 [權限] 索引標籤上,將 IAM 政策新增至儲存貯體,如中所述Amazon S3 中 CRL 的訪問政策

設定 CloudFront 雙酚 A

建立可存取私有 S3 儲存貯體的 CloudFront 發行版,並可將 CRL 提供給未經驗證的用戶端。

若要設定 CRL 的 CloudFront 發佈
  1. 使用 Amazon CloudFront 開發人員指南中建立分發中的程序建立新 CloudFront 的分發

    完成程序時,套用下列設定:

    • 原始網域名稱中,選擇您的 S3 儲存貯體。

    • 針對限制值區存取,選擇「是」

    • 選擇為原始存取身分建立新的身分識別

    • 在「授與值區讀取權限」下選擇「是,更新儲存貯體政策」。

      注意

      在此程序中, CloudFront 修改值區政策以允許其存取值區物件。請考慮編輯此原則,只允許存取crl資料夾下的物件。

  2. 在發行版初始化之後,請在 CloudFront 主控台中找到其網域名稱,並將其儲存以供下一個程序使用。

    注意

    如果您的 S3 儲存貯體是在 us-east-1 以外的區域中新建立的,則當您透過存取已發佈的應用程式時,可能會收到 HTTP 307 暫時重新導向錯誤。 CloudFront存儲桶的地址可能需要幾個小時才能傳播。

設定適用雙酚 A 的 CA

設定新 CA 時,請將別名納入您的 CloudFront發行版本。

若要使用 CNAME 設定您的 CA,請執行下列項目 CloudFront
  • 使用建立您的 CA 建立一個 CA (CLI) 的程序

    當您執行此程序時,撤銷檔案revoke_config.txt應包含下列幾行,以指定非公開 CRL 物件,並在中提供發佈端點的 URL: 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 儲存貯體上設定加密。 AWS 私有 CA 針對 Amazon S3 中的資產支援兩種加密模式:

  • 使用亞馬遜 S3 代管的 AES-256 金鑰進行自動伺服器端加密。

  • 使用客戶管理的加密, AWS Key Management Service 並根據您的規格進行 AWS KMS key 配置。

注意

AWS 私有 CA 不支援使用 S3 自動產生的預設 KMS 金鑰。

下列程序說明如何設定每個加密選項。

設定自動加密

完成以下步驟以啟用 S3 伺服器端加密。

  1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  2. 在「時段」表格中,選擇要保留 AWS 私有 CA 資產的值區。

  3. 在您的儲存貯體頁面上,選擇屬性索引標籤。

  4. 選擇預設加密卡片。

  5. 選擇 啟用

  6. 選擇 Amazon S3 密鑰(SSE-S3)

  7. 選擇 Save Changes (儲存變更)。

設定自訂加密

完成下列步驟以啟用使用自訂金鑰加密。

  1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  2. 在「時段」表格中,選擇要保留 AWS 私有 CA 資產的值區。

  3. 在您的儲存貯體頁面上,選擇屬性索引標籤。

  4. 選擇預設加密卡片。

  5. 選擇 啟用

  6. 選擇金AWS Key Management Service 鑰 (SSE-KMS)。

  7. 擇「從您的 AWS KMS 金鑰中選擇」或「輸入 AWS KMS key ARN」。

  8. 選擇 Save Changes (儲存變更)。

  9. (選擇性) 如果您尚未擁有 KMS 金鑰,請使用下列建立金鑰指令建立一個 KMS AWS CLI 鑰:

    $ aws kms create-key

    輸出包含 KMS 金鑰的金鑰識別碼和 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. 使用下列步驟,您可以授與 AWS 私有 CA 服務主體使用 KMS 金鑰的權限。根據預設,所有 KMS 金鑰都是私密的;只有資源擁有者可以使用 KMS 金鑰來加密和解密資料。然而,資源擁有者可以授與其他使用者和資源存取 KMS 金鑰的許可。服務主體必須與存放 KMS 金鑰所在的區域相同。

    1. 首先,使policy.json用下列get-key-policy命令將 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

如果您使用 S3 儲存貯體做為 CA 的 CDP,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

如果您已使用自訂 CNAME 來設定 CA,則 CDP URI 將包含 CNAME,例如 http://alternative.example.com/crl/CA-ID.crl