本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
最佳实践
最佳实践是可以帮助您更有效地使用 AWS Certificate Manager (AWS Certificate Manager) 的建议。以下最佳实践基于来自当前 ACM 客户的实际经验。
Account-level 分离
通过在策略中使用账户级别隔离,来控制谁可以在账户级别访问证书。将生产证书与测试和开发证书分别存放在不同的账户中。如果无法使用账户级隔离,则可以通过在策略中拒绝 kms:CreateGrant 操作来限制对特定角色的访问权限。这会限定账户中可以对证书进行高级别签名的角色。有关授权的信息,包括授权术语,请参阅《AWS Key Management Service 开发人员指南》中的 Grants in AWS KMS。
如果您想要更精细的控制而不是限制kms:CreateGrant按账户使用,则可以使用 k ms: EncryptionContext 条件密钥限制kms:CreateGrant特定证书。将 arn:aws:acm 指定为键,并指定要限制的 ARN 的值。以下示例策略会禁止使用特定的证书,但允许使用其他证书。
AWS CloudFormation
AWS CloudFormation您可以使用创建描述您要使用的AWS资源的模板。 CloudFormation然后为您预置和配置这些资源。 CloudFormation可以配置 ACM 支持的资源,例如 Elastic Load Balancing CloudFront、Amazon 和 Amazon API Gateway。有关更多信息,请参阅 通过集成服务实现托管自动化。
如果您使用CloudFormation快速创建和删除多个测试环境,我们建议您不要为每个环境创建单独的 ACM 证书。这样做会快速耗尽您的证书配额。有关更多信息,请参阅 配额。相反,创建一个涵盖了您用于测试的所有域名的通配符证书。例如,如果您为仅因版本号而异的域名重复创建 ACM 证书 <version>.service.example.com,请改为为创建单个通配符证书。<*> .service.example.com
重要
如果您使用的是亚马逊 CloudFront 分配,请注意 HTTP 验证不支持通配符证书。在CloudFormation模板中包含通配符证书以用于 Amazon 时 CloudFront,必须使用 DNS 验证或电子邮件验证。我们建议使用 DNS 验证以获得自动续订功能。
在CloudFormation用于创建测试环境的模板中包含通配符证书。
自定义信任存储
为了确保与受 ACM 证书保护的端点的连接,我们建议将 Amazon 根
证书固定
证书固定(有时也称为 SSL 固定)是一种可以在应用程序中使用的过程,通过将远程主机与其 X.509 证书或公钥而不是证书层次结构关联来验证远程主机。因此,该应用程序使用锁定来绕过 SSL/TLS 证书链验证。典型的 SSL 验证过程将检查证书链 (从根证书颁发机构 (CA) 证书到从属 CA 证书 (如果有)) 中的签名。此外,它还检查层次结构底部远程主机的证书。您的应用程序可改为固定到远程主机的证书以指示仅 该证书 (而非根证书或链中的任何其他证书) 受信任。在应用程序开发过程中,您可以将远程主机的证书或公有密钥添加到应用程序。或者,应用程序也可以在首次连接到主机时添加证书或密钥。
警告
建议您的应用程序不固定 ACM 证书。ACM 会在您的 Amazon-issued SSL/TLS 证书中的托管证书续订 AWS Certificate Manager到期之前自动续订证书。为了续订证书,ACM 会生成新的公有-私有密钥对。如果您的应用程序固定 ACM 证书,并且已使用新的公有密钥成功续订证书,则应用程序可能无法连接到您的域。
如果您决定固定证书,则以下选项将不会阻止您的应用程序连接到您的域:
-
将您自己的证书导入到 ACM,然后将您的应用程序固定到导入的证书。ACM 不会尝试自动续订导入的证书。
-
如果您使用的是公有证书,则将您的应用程序固定到所有可用的 Amazon 根证书
。如果您使用的是私有证书,则将您的应用程序固定到 CA 的根证书。
域验证
在 Amazon 证书颁发机构 (CA) 为您的网站颁发证书之前,AWS Certificate Manager(ACM) 必须验证您是否拥有或控制您在请求中指定的所有域。您可以使用电子邮件或 DNS 执行验证。有关更多信息,请参阅 AWS Certificate Manager 域名系统验证 和 AWS Certificate Manager 电子邮件验证。
添加或删除域名
您无法在现有 ACM 证书中添加或删除域名。而必须请求包含修订过的域名列表的新证书。例如,如果证书有五个域名,并且需要添加四个域名,则必须请求包含九个域名的新证书。与任何新证书一样,您必须对请求中的所有域名验证所有权,包括之前为原始证书验证过的域名。
如果使用电子邮件验证,则对于每个域,您最多将收到 8 封验证电子邮件,并且您必须在 72 小时之内至少根据其中 1 封邮件执行操作。例如,如果请求包含五个域名的证书,您最多将收到 40 封验证电子邮件,并且您必须在 72 小时之内至少根据其中 5 封执行操作。随着证书请求中域名数量的增加,使用电子邮件来验证域所有权所需的工作量也会增加。
如果改为使用 DNS 验证,则必须为需要验证的 FQDN 向数据库写入一条新 DNS 记录。ACM 会向您发送要创建的记录,并在稍后查询数据库以确定是否已添加该记录。添加该记录即声明您拥有或可以控制该域。在前面的示例中,如果请求包含五个域名的证书,则必须创建五条 DNS 记录。建议您尽量使用 DNS 验证。
打开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 操作的示例跟踪记录。