

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS 私有 CA 最佳实践
<a name="ca-best-practices"></a>

最佳实践是可以帮助您 AWS 私有 CA 有效使用的建议。以下最佳实践基于当前 AWS Certificate Manager 和 AWS 私有 CA 客户的实际经验。

## 记录 CA 结构和策略
<a name="document-ca"></a>

AWS 建议记录您在运营 CA 时的所有策略和实践。这可能包括：
+ 关于 CA 结构的决策的推理
+ 一张显示你 CAs 和他们之间关系的图表
+ 关于 CA 有效期的策略
+ CA 继承规划
+ 关于路径长度的策略
+ 权限目录
+ 管理控制结构说明
+ 安全性

您可以在称为“认证策略 (CP)”和“认证实践声明 (CPS)”的这两个文档中捕获这些信息。有关捕获关于 CA 操作的重要信息的框架，请参阅 [RFC 3647](https://www.ietf.org/rfc/rfc3647.txt)。

## 尽可能减少对根 CA 的使用
<a name="minimize-root-use"></a>

一般而言，根 CA 只能用于为中间证书颁发证书 CAs。这允许将根 CA 存储在远离危险的地方，而中间证书可以 CAs执行签发最终实体证书的日常任务。

但是，如果您的组织目前的做法是直接从根 CA 颁发最终实体证书，则 AWS 私有 CA 可以在改善安全性和运营控制的同时支持此工作流程。在这种情况下，颁发终端实体证书需要 IAM 权限策略，该策略允许您的根 CA 使用终端实体证书模板。有关 IAM 策略的信息，请参阅 [身份和访问管理 (IAM) Access Management 适用于 AWS 私有证书颁发机构](security-iam.md)。

**注意**  
此配置施加了可能带来操作挑战的限制。例如，如果您的根 CA 被破坏或丢失，则必须创建一个新的根 CA 并将其分发给您环境中的所有客户端。在此恢复过程完成之前，您将无法颁发新证书。直接从根 CA 颁发证书还可以防止您限制访问和限制从根 CA 颁发的证书的数量，这都是管理根 CA 的最佳实践。

## 给根 CA 自己的 CA AWS 账户
<a name="isolate-root-account"></a>

在两个不同的 AWS 账户中创建根 CA 和从属 CA 是推荐的最佳做法。这样做可以为您的根 CA 提供更多保护和访问控制。为此，您可以从一个账户中的从属 CA 导出 CSR，然后使用另一个账户中的根 CA 对其进行签名。这种方法的好处是，您可以 CAs 按账户单独控制自己的控制权。缺点是您无法使用向 AWS 管理控制台 导来简化从根 CA 签署从属 CA 的 CA 证书的过程。

**重要**  
我们强烈建议您在访问时使用多因素身份验证 (MFA)。 AWS 私有 CA

## 管理员和颁发者角色分开
<a name="role-separation"></a>

CA 管理员角色应与只需要颁发终端实体证书的用户分开。如果您的 CA 管理员和证书颁发者住在同一个地方 AWS 账户，则可以通过专门为此目的创建 IAM 用户来限制颁发者的权限。

## 实施证书的托管吊销
<a name="managed-revocation"></a>

证书被吊销后，托管吊销会自动向证书客户发送通知。如果证书的加密信息已泄露或颁发有误，则可能需要吊销证书。客户通常拒绝接受已撤销的证书。 AWS 私有 CA 为托管吊销提供了两个标准选项：在线证书状态协议 (OCSP) 和证书吊销列表 ()。CRLs有关更多信息，请参阅 [规划您的 AWS 私有 CA 证书吊销方法](revocation-setup.md)。

## 开启 AWS CloudTrail
<a name="use-cloudtrail"></a>

在创建和开始操作私有 CA 之前，请开启 CloudTrail 日志功能。借 CloudTrail助，您可以检索账户 AWS 的 API 调用历史记录，以监控您的 AWS 部署。此历史记录包括从 AWS 管理控制台、 AWS Command Line Interface、和更高级别的 AWS SDKs AWS 服务发出的 API 调用。您还可以确定哪些用户和账户调用了 PCA API 操作、发出调用的源 IP 地址以及发生调用的时间。您可以使用 API CloudTrail 集成到应用程序中，为您的组织自动创建跟踪，检查跟踪的状态，并控制管理员如何开启和关闭 CloudTrail 登录功能。有关更多信息，请参阅[创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)。转[使用记录 AWS 私有证书颁发机构 API 调用 AWS CloudTrail](logging-using-cloudtrail-pca.md)至查看 AWS 私有 CA 操作的示例路径。

## 管理 CA 密钥和证书
<a name="rotate-keys"></a>

您可以通过延长私有 CA 的有效期或轮换 CA 密钥来管理私有 CA 的生命周期。

### 延长 CA 有效期
<a name="extend-ca-validity"></a>

您可以通过导入到期日期更长的新 CA 证书来延长 CA 的有效期。

### 轮换 CA 密钥
<a name="rotate-ca-key"></a>

使用新的 CA 替换私有 CA，定期轮换 CA 密钥。创建新 CA 后，将应用程序和服务中对 CA ARN 的所有引用更新为新创建的 CA ARN，并使用新的 CA 证书更新基础架构中的信任存储。

**注意**  
如果您更换 CA 本身，请注意 CA 的 ARN 会发生变化。您的自动化系统中硬编码的 ARN 参考文献将会中断。

## 删除未使用的 CAs
<a name="delete-unused-ca"></a>

您可以永久删除私有 CA。如果您不再需要 CA 或者要将其替换为具有较新私有密钥的 CA，您可能要执行此操作。要安全删除 CA，我们建议您执行 [删除私有 CA](PCADeleteCA.md) 中所述的流程。

**注意**  
AWS 在 CA 被删除之前向您收费。

## 阻止公众访问您的 CRLs
<a name="bpa-crl"></a>

AWS 私有 CA 建议对包含以下内容的存储桶使用 Amazon S3 阻止公共访问 (BPA) 功能。 CRLs这样可以避免不必要地将您的私有 PKI 的详细信息暴露给潜在的对手。BPA 是 S3 的[最佳实践](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)，在新桶上默认处于启用状态。在某些情况下，需要进行其他设置。有关更多信息，请参阅 [使用启用 S3 阻止公共访问 (BPA) CloudFront](crl-planning.md#s3-bpa)。

## Amazon EKS 应用程序最佳实践
<a name="kubernetes"></a>

使用 AWS 私有 CA 为 Amazon EKS 配置 X.509 证书时，请按照《A [mazon EK](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/#kubernetes-as-a-service) S 最佳实践指南》中有关保护多租户环境的建议。有关将 AWS 私有 CA 与 Kubernetes 集成的一般信息，请参阅 [使用 Kubernetes 保护 AWS 私有证书颁发机构](PcaKubernetes.md)。