最佳实践 - AWS 证书 Manager

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

最佳实践

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

AWS CloudFormation

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

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

证书固定

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

警告

建议您的应用程序固定 ACM 证书。ACM 会执行 ACM 证书的托管续订 以在 Amazon 颁发的 SSL/TLS 证书过期前进行续订这些证书。为了续订证书,ACM 会生成新的公有-私有密钥对。如果您的应用程序固定 ACM 证书,并且已使用新的公有密钥成功续订证书,则应用程序可能无法连接到您的域。

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

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

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

域验证

在 Amazon 证书颁发机构 (CA) 为您的网站颁发证书之前, AWS 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 已开始在至少两个公有日志中发布所有新证书和续订。证书一旦记录,便无法删除。有关更多信息,请参阅 证书透明度日志

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

要在申请证书时选择退出透明度记录,请使用请求证书 AWS CLI 命令或 RequestCertificateAPI 操作的options参数。如果您的证书是在 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

开启 AWS CloudTrail

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