最佳实践 - Amazon Certification
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

最佳实践

最佳实践是可以帮助您更有效地使用 Amazon Certificate Manager (Amazon Certificate Manager) 的建议。以下最佳实践基于当前ACM客户的实际经验。

账户级分离

在策略中使用账户级别的分隔来控制谁可以在账户级别访问证书。将您的生产证书与测试和开发证书分开存放在不同的账户中。如果您无法使用账户级分离,则可以通过拒绝策略中的kms:CreateGrant操作来限制对特定角色的访问权限。这限制了账户中的哪些角色可以对证书进行高级签名。有关授权的信息,包括授权术语,请参阅《Amazon Key Management Service 开发者指南Amazon KMS中的授权。

如果您想要更精细的控制而不是限制kms:CreateGrant按账户使用,则可以使用 k ms: EncryptionContext 条件密钥限制kms:CreateGrant特定证书。指定arn:aws:acm为键,并指定ARN要限制的值。以下示例策略禁止使用特定证书,但允许使用其他证书。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:acm:arn": "arn:aws:acm:us-east-1:111122223333:certificate/b26def74-1234-4321-9876-951d4c07b197" } } } ] }

Amazon CloudFormation

Amazon CloudFormation 您可以使用创建描述您要使用的 Amazon 资源的模板。 Amazon CloudFormation 然后为您预置和配置这些资源。 Amazon CloudFormation 可以预配置 Elastic Load Balancing CloudFront、Amazon 和 Amazon API Gateway ACM 等支持的资源。有关更多信息,请参阅 与之集成的服务 Amazon Certificate Manager

如果您使用 Amazon CloudFormation 快速创建和删除多个测试环境,我们建议您不要为每个环境创建单独的ACM证书。这样做会快速耗尽您的证书配额。有关更多信息,请参阅 配额。相反,创建一个涵盖了您用于测试的所有域名的通配符证书。例如,如果您重复为仅因版本号而异的域名创建ACM证书,例如 <version>.service.example.com,改为为创建单个通配符证书 <*>.service.example.com。 在 Amazon CloudFormation 用于创建测试环境的模板中包含通配符证书。

证书固定

证书固定(有时也称为SSL固定)是一种可以在应用程序中使用的过程,通过将远程主机与其 X.509 证书或公钥而不是证书层次结构关联来验证远程主机。因此,该应用程序使用锁定来绕过SSL/TLS证书链验证。典型的SSL验证过程会检查整个证书链中的签名,从根证书颁发机构 (CA) 证书到从属 CA 证书(如果有)。此外,它还检查层次结构底部远程主机的证书。您的应用程序可改为固定到远程主机的证书以指示 该证书 (而非根证书或链中的任何其他证书) 受信任。在应用程序开发过程中,您可以将远程主机的证书或公有密钥添加到应用程序。或者,应用程序也可以在首次连接到主机时添加证书或密钥。

警告

我们建议您的应用程序不要锁定ACM证书。ACM执行ACM证书的托管续订以在亚马逊颁发的SSL/TLS证书到期之前自动续订这些证书。要续订证书,请ACM生成新的公私钥对。如果您的应用程序锁定了ACM证书,并且使用新的公钥成功续订了证书,则该应用程序可能无法连接到您的域。

如果您决定固定证书,则以下选项将不会阻止您的应用程序连接到您的域:

  • 将@@ 您自己的证书导入ACM,然后将您的应用程序固定到导入的证书。ACM不会尝试自动续订导入的证书。

  • 如果您使用的是公有证书,则将您的应用程序固定到所有可用的 Amazon 根证书。如果您使用的是私有证书,则将您的应用程序固定到 CA 的根证书。

域验证

在 Amazon 证书颁发机构 (CA) 为您的网站颁发证书之前, Amazon Certificate Manager (ACM) 必须验证您是否拥有或控制您在请求中指定的所有域名。您可以使用电子邮件或DNS. 有关更多信息,请参阅DNS验证电子邮件验证

添加或删除域名

您不能在现有ACM证书中添加或删除域名。而必须请求包含修订过的域名列表的新证书。例如,如果证书有五个域名,并且需要添加四个域名,则必须请求包含九个域名的新证书。与任何新证书一样,您必须对请求中的所有域名验证所有权,包括之前为原始证书验证过的域名。

如果使用电子邮件验证,则对于每个域,您最多将收到 8 封验证电子邮件,并且您必须在 72 小时之内至少根据其中 1 封邮件执行操作。例如,如果请求包含五个域名的证书,您最多将收到 40 封验证电子邮件,并且您必须在 72 小时之内至少根据其中 5 封执行操作。随着证书请求中域名数量的增加,使用电子邮件来验证域所有权所需的工作量也会增加。

如果改用DNS校验,则必须为FQDN要校验的内容向数据库写入一条新DNS记录。ACM向您发送要创建的记录,然后查询数据库以确定该记录是否已添加。添加该记录即声明您拥有或可以控制该域。在前面的示例中,如果您请求包含五个域名的证书,则必须创建五DNS条记录。我们建议您尽可能使用DNS验证。

选择退出证书透明度日志记录

重要

无论您采取何种操作退出证书透明度日志记录,您的证书都可能仍被任何有权访问您将证书绑定到的公共或私有终端节点的客户端或个人所记录。但是,证书将不包含签名的证书时间戳 (SCT)。只有颁发证书的 CA 才能在证书SCT中嵌入。

自 2018 年 4 月 30 日起,Google Chrome 不再信任未记录在证书透明度日志中的公共SSL/TLS证书。因此,从 2018 年 4 月 24 日起,Amazon CA 已开始在至少两个公有日志中发布所有新证书和续订。证书一旦记录,便无法删除。有关更多信息,请参阅 证书透明度日志

当您请求证书或续订证书时,会自动执行日志记录,但您可以选择退出。这样做的常见原因包括对安全和隐私的疑虑。例如,记录内部主机域名会向潜在的攻击者提供有关内部网络的信息,否则将不会公开。此外,日志记录还可能会泄露新的或未发布的产品和网站的名称。

要在申请证书时选择退出透明度记录,请使用 request- certification Amazon CLI 命令或操作的optionsRequestCertificateAPI参数。如果您的证书是在 2018 年 4 月 24 日之前颁发的,并且您想确保续订期间未记录该证书,则可以使用update-certificate-options命令或UpdateCertificateOptionsAPI操作选择退出。

限制
  • 您无法使用控制台启用或禁用透明度日志记录。

  • 在证书进入续订期(通常在证书过期前 60 天)后,您无法更改日志记录状态。在状态更改失败时不会生成错误消息。

证书一旦记录,便无法从日志中删除。在该时间点选择退出将不起作用。如果您在请求证书时选择退出日志记录,然后在稍后再选择回来,则您的证书将不会被记录,直到续订它为止。如果您希望证书被立即记录,我们建议您发布一个新的证书。

以下示例向您展示了在请求新的证书时如何使用 request-certificate 命令禁用证书透明度。

aws acm request-certificate \ --domain-name www.example.com \ --validation-method DNS \ --options CertificateTransparencyLoggingPreference=DISABLED \

前面的命令输出您的新证书。ARN

{ "CertificateArn": "arn:aws:acm:region:account:certificate/certificate_ID" }

如果您已有证书,并且不希望在续订证书时将其记录下来,请使用update-certificate-options命令。此命令不返回值。

aws acm update-certificate-options \ --certificate-arn arn:aws:acm:region:account:\ certificate/certificate_ID \ --options CertificateTransparencyLoggingPreference=DISABLED

开启 Amazon CloudTrail

在开始使用之前,请开启 CloudTrail 日志功能ACM。 CloudTrail 允许您通过检索账户的 Amazon API呼叫历史记录来监控您的 Amazon 部署,包括通过 Amazon 管理控制台、 Amazon Command Line Interface、和更高级别的 Amazon Web Services 进行的API呼叫。 Amazon SDKs您还可以识别哪些用户和账户拨打了电话ACMAPIs、发出呼叫的源 IP 地址以及呼叫发生的时间。您可以使用 CloudTrail 集成到应用程序中API,为您的组织自动创建跟踪,检查跟踪的状态,并控制管理员如何开启和关闭 CloudTrail 日志记录。有关更多信息,请参阅创建跟踪。转 CloudTrail 与一起使用 Amazon Certificate Manager至查看ACM操作的示例路径。