写点什么

行动起来!为迁移到自己的证书颁发机构做好准备!

发布于: 2021 年 04 月 20 日
行动起来!为迁移到自己的证书颁发机构做好准备!

提醒:从 2021 年 3 月 23 日起,Amazon Simple Storage Service (Amazon S3) 和 Amazon CloudFront 服务将迁移至 Amazon Trust Services


传输层安全性(TLS,以前称为安全套接字层[SSL])是用于加密在 Internet 上交换信息的一项重要的举措。 例如,Amazon.com 为其网站上的所有流量应用 TLS,而亚马逊云科技则使用它来保护对亚马逊云科技服务的调用过程。


在创建这样的加密连接时,被称为证书的电子文档将用于验证服务器的身份。 该证书有助于确定您的网络浏览器正在与您在浏览器的地址栏中所输入的网站进行安全通信。证书颁发机构(也称为 CA)向特定的域颁发证书。当这个域出示由收信人的 CA 颁发的证书时,您的浏览器或应用程序就会知道当前所建立连接是安全的。


2016 年 1 月,亚马逊云科技推出了 Amazon Certificate Manager(ACM),该服务可让您轻松地配置,管理和部署 SSL / TLS 证书,并且可以与其他的亚马逊云科技服务结合在一起使用。 这些证书可通过 Amazon 提供的 CA:Amazon Trust Services 免费获得。 为了使浏览器和其他应用程序信任证书,必须在浏览器的信任存储区中添加证书的颁发者,信任存储区是受信任的 CA 的列表。 如果颁发 CA 不在信任存储中,则浏览器将显示错误消息(请参见示例),并且应用程序将显示特定的应用程序错误。 为了确保 Amazon Trust Services CA 能够普及,亚马逊云科技收购了 Starfield Services CA,该根机构在大多数浏览器中都可以找到,并且自 2005 年以来一直有效。这意味着您不必采取任何措施即可使用 Amazon Trust Services 颁发的证书。


亚马逊云科技一直通过 Amazon Trust Services CA 向亚马逊云科技客户提供免费证书。现在亚马逊云科技正在为 Amazon EC2 和 Amazon DynamoDB 等服务迁移证书,以采用来自 Amazon Trust Services 颁发的证书。对于大多数软件来说,并不需要做出更改就可以应对这样的转换,但也会有例外。在此文章中,我将向您展示如何验证您是否已准备好使用 Amazon Trust Services CA。

如何判断 Amazon Trust Services CA 是否在您的信任存储区中?

下面列出了 Amazon Trust Services 证书。 要验证这些证书是否在您的浏览器的信任存储区中,请查看下面的“测试 URL”的链接以验证它是否适合您。 当测试 URL 不起作用时,它将显示类似于此示例的错误。

https://untrusted-root.badssl.com/ 


专有名称

CN=Amazon Root CA 1,

O=Amazon,

C=US

SHA-256 主体公钥信息哈希:

fbe3018031f9586bcbf41727e417b7d1c45c2f47f93be372a17b96b50757d5a2

测试 URL:

https://good.sca1a.amazontrust.com/


专有名称

CN=Amazon Root CA 2,

O=Amazon,

C=US

SHA-256 主体公钥信息哈希:

7f4296fc5b6a4e3b35d3c369623e364ab1af381d8fa7121533c9d6c633ea2461

测试 URL:

https://good.sca2a.amazontrust.com/


专有名称

CN=Amazon Root CA 3,

O=Amazon,

C=US

SHA-256 主体公钥信息哈希:

36abc32656acfc645c61b71613c4bf21c787f5cabbee48348d58597803d7abc9

测试 URL:

https://good.sca3a.amazontrust.com/


专有名称

CN=Amazon Root CA 4,

O=Amazon,

C=US

SHA-256 主体公钥信息哈希:

f7ecded5c66047d28ed6466b543c40e0743abe81d109254dcf845d4c2c7853c5

测试 URL:

https://good.sca4a.amazontrust.com/


专有名称

CN=Starfield Services Root Certificate Authority – G2,

O=Starfield Technologies\, Inc.,

L=Scottsdale,

ST=Arizona,C=US

SHA-256 主体公钥信息哈希:

2b071c59a0a0ae76b0eadb2bad23bad4580b69c3601b630c2eaf0613afa83f92

测试 URL:

https://good.sca0a.amazontrust.com/


专有名称

Starfield Class 2 Certification Authority

SHA-256 主体公钥信息哈希:

15f14ac45c9c7da233d3479164e8137fe35ee0f38ae858183f08410ea82ac4b4

测试 URL:

不适用


注意:Amazon 不拥有该根,也没有针对它的测试 URL。 证书可以从这里下载。

https://certs.secureserver.net/repository/sf-class2-root.crt


您可以计算以下主体公钥信息的 SHA-256 哈希。将 PEM 编码的证书存储在 certificate.pem 中,运行以下 openssl 命令:


openssl x509 -in certificate.pem -noout -pubkey | openssl asn1parse -noout -inform pem -out certificate.keyopenssl dgst -sha256 certificate.key


例如,使用 PEM 编码的文件 sf-class2-root.crt 中的 Starfield Class 2 证书颁发机构自签名证书,可以使用以下 openssl 命令:


openssl x509 -in sf-class2-root.crt -noout -pubkey | openssl asn1parse -noout -inform pem -out sf-class2-root.keyopenssl dgst -sha256 sf-class2-root.key ~SHA256(sf-class2-root.key)= 15f14ac45c9c7da233d3479164e8137fe35ee0f38ae858183f08410ea82ac4b4

如果 Amazon Trust Services CA 不在您的信任存储区域中该怎么办?

如果您对任何测试 URL 的测试都是失败的,则必须更新您的信任存储区域。 更新信任存储区域的最简单方法是升级您当前所使用的操作系统或浏览器。


您可以在以下操作系统中找到 Amazon Trust Services CA(发行日期在括号中): 


  • Microsoft Windows 版本,安装了 2005 年 1 月之后更新的 Windows Vista,Windows 7,Windows Server 2008 和更高版本

  • 具有 Java 的 Mac OS X 10.4(适用于 Mac OS X 10.4 Release 5,Mac OS X 10.5 和更高版本)

  • Red Hat Enterprise Linux 5 (2007 年 3 月), Linux 6,Linux 7 和 CentOS 5,CentOS 6 和 CentOS 7

  • Ubuntu 8.10

  • Debian 5.0

  • Amazon Linux (所有版本)

  • Java 1.4.2_12, Java 5 update 2, 以及所有较新的版本, 包括 Java 6, Java 7 和 Java 8


所有现代浏览器都信任 Amazon 的 CA。 您可以仅通过更新浏览器的方式来更新浏览器中的证书捆绑包。 您可以在各自的网站上找到有关更新以下浏览器的说明:

  • Chrome

    https://support.google.com/chrome/answer/95414?hl=en

  • Firefox

    https://support.mozilla.org/en-US/kb/update-firefox-latest-release?redirectslug=update-firefox-latest-version&redirectlocale=en-US

  • Safari

    https://support.apple.com/en-us/HT204416

  • Windows 操作系统管理 Internet Explorer 和 Microsoft Edge 的证书捆绑包,因此您也必须更新 Windows。

    https://support.microsoft.com/zh-cn/topic/%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%93%AA%E4%B8%AA%E7%89%88%E6%9C%AC%E7%9A%84-internet-explorer-86e0ab5e-c60b-bc44-655d-cb4c69f5a3c2#ie=other


如果您的应用程序使用自定义的信任存储库,就必须将 Amazon 根 CA 添加到应用程序的信任存储库中。 执行此操作的说明因应用程序或平台而存在差异。 请参考您所使用的应用程序或平台的文档说明。

Amazon Web Services SDK 和 CLI

大多数 Amazon Web Services SDK 和 CLI 不会受到向 Amazon Trust Services CA 过渡的影响。如果您使用的是 2013 年 10 月 29 日之前发布的 Python Amazon Web Services SDK 或 CLI 版本,则必须升级。.NET、Java、PHP、Go、JavaScript 以及 C++ SDK 和 CLI 不会捆绑任何证书,因它们所使用的证书来自于操作系统。自 2015 年 6 月 10 日起,Ruby SDK 至少包括了一个必需的 CA。在此之前,Ruby V2 SDK 没有捆绑证书。

证书绑定

如果您使用一种被称为证书绑定的技术逐域锁定您信任的 CA,则必须要对绑定的证书进行调整,以将 Amazon Trust Services CA 包含在内。证书绑定有助于保护您免受使用误发的证书来欺骗应用程序的攻击者建立与欺骗主机(伪装成合法主机的非法主机)的连接。对特定绑定证书的限制是通过检查签发的证书是否为预期证书来做出的。这是通过检查从服务器接收的证书公钥的哈希值是否与存储在应用程序中的预期哈希值匹配来完成的。如果哈希不匹配,则代码将中止连接。


亚马逊云科技不建议使用证书绑定,因为这会带来潜在的可用性风险。如果您绑定的证书被替换,则您的应用程序将无法连接。 如果您的用例需要绑定,我们建议您绑定 CA 而不是单个证书。 如果您要绑定到 Amazon Trust Services CA,则应该绑定本文前面所显示的所有 CA。

更新 S3 和 CloudFront 的证书

提醒您,从 2021 年 3 月 23 日开始,Amazon S3 和 Amazon CloudFront 将其默认的 TLS 证书从 DigiCert 迁移至 Amazon Trust Services。2018 年,亚马逊云科技宣布将亚马逊云科技服务的 TLS 证书广泛迁移到自己的颁发机构 Amazon Trust Services(ATS)


为确保您的应用程序在此次更改后继续正常运行,您可能需要采取措施。如果您已经在使用其他亚马逊云科技服务,则您的应用程序很可能已信任 Amazon Trust Services,因为许多亚马逊云科技服务已经迁移了颁发机构(CA)。


如果您不将 HTTPS 流量直接发送到 S3 存储桶,或者仅使用自定义域名(如 www.example.com)发送到 CloudFront 的 HTTPS 流量,则不受此迁移的影响,您可以忽略此提醒消息。如果您直接将 HTTPS 流量发送到 S3 存储桶,或将 HTTPS 流量发送到*.cloudfront.net 涵盖的 CloudFront 域,我们建议您必须确认您的应用程序信任 Amazon Trust Services 作为 CA。如果 Amazon Trust Services 不在您的信任库中,您将在浏览器和应用程序中看到特定的错误消息(请参阅https://untrusted-root.badssl.com/)。


为准备好此次迁移,请执行以下任何测试:


从:https://s3-ats-migration-test.s3.eu-west-3.amazonaws.com/test.jpg中检索测试对象。然后,验证您是否收到 200 回复或在测试图像中看到绿色的对钩标志。


在以下任何 AWS 区域创建一个 Amazon S3 存储桶:EU-WEST-3、EU-NORTH-1、ME-SOUTH-1、AP-NORTHEAST-3、AP-EAST-1 或 US-GOV-EAST-1。然后,验证您是否能够通过 HTTPS 检索测试对象。


如果以上任一测试成功,则您的客户端已准备好迁移到 Amazon Trust Services


要更完整地测试,以验证 Amazon Trust Services 的所有四个根是否都包含在您的客户端信任库中,请使用前面表格中提供的测试 URL。对于此迁移,无需直接信任所有 4 个 Amazon Trust Services 的根 CA。如果您的应用程序信任 Starfield Services 根 CA,就已经足够了。Amazon S3 和 CloudFront 将呈现具有由 Starfield Service 根 CA 交叉签名的 Amazon 根 CA 的证书链。


如果前两项测试中的任何一项失败,您必须执行以下一项或多项操作:


  • 升级您使用的操作系统或浏览器。

  • 更新应用程序以通过自定义域名和您自己的证书来使用 CloudFront。

  • 如果您的应用程序使用的是自定义证书信任库或证书锁定,包含 Amazon Trust Services 的 CA,请参阅:Amazon Trust Services Repository 页面。

    https://www.amazontrust.com/repository/

如果您有其他问题,或需要其他帮助,请在登录 Amazon 支持中心后进行反馈。

常见问题

Q1

发生了哪些变更?

Amazon S3 和 Amazon CloudFront 的默认证书颁发机构从 DigiCert 变更为 Amazon Trust Services。此变更不会影响仅使用 HTTP 或使用自定义 TLS 证书的工作负载。在 Amazon S3 中,已经使用 Amazon Trust Services 的区域包括 eu-west-3、eu-north-1、me-south-1、ap-northeast-3、ap-east-1 和 us-gov-east-1 的所有区域终端节点。S3 将把其余的 Amazon 区域也迁移至 Amazon Trust Services。在 CloudFront 中,所有边缘位置终端节点都将迁移到 Amazon Trust Services


Q2

这些变更何时发生?

CA 变更将于 2021 年 3 月 23 日开始。


Q3

我需要做什么?

检查您的客户端证书信任库,验证其是否已经信任 Amazon Trust Services 的根证书。如果已经信任,则无需进一步采取措施。如果它不信任 Amazon Trust Services,请执行以下操作之一:解决方案选项 1,更新客户端证书信任库,使其包含 Amazon Trust Services 的所有根证书。解决方案选项 2,将您的应用程序请求的域名更改为 CloudFront 替代域名(CNAME),该域名使用来自已受信任 CA 的 TLS 证书。


Q4

如何测试我的应用程序是否信任 ATS?

您可以通过在应用程序中执行以下测试之一,来验证您的应用程序是否信任 Amazon Trust Services


测试选项 1:

https://s3-ats-migration-test.s3.eu-west-3.amazonaws.com/test.jpg中检索测试对象。然后验证您是否收到 200 回复或在测试图像中看到绿色的对钩标志。


测试选项 2:

在您的亚马逊云科技帐户中,在以下任何亚马逊云科技区域创建一个 Amazon S3 存储桶:eu-west-3、eu-north-1、me-south-1、ap-northeast-3、ap-east-1 或 us-gov-east-1。然后通过 HTTPS 检索测试对象。


Q5

哪些根证书属于 Amazon Trust Services?

请参阅 Amazon Trust Services Repository 页面。

https://www.amazontrust.com/repository/


Q6

如果我的客户端不信任 ATS 的 CA

2021 年 3 月 23 日之后会发生什么?

向 Amazon S3 或 Amazon CloudFront 的默认终端节点发出的所有客户端 HTTPS 请求都将收到 Amazon Trust Services 签名的默认证书。如果客户端信任库不信任该 CA,它将把 TLS 证书报告为“不受信任”,并可能关闭连接。


原文链接:行动起来!为迁移到自己的证书颁发机构做好准备!

用户头像

还未添加个人签名 2019.09.17 加入

还未添加个人简介

评论

发布
暂无评论
行动起来!为迁移到自己的证书颁发机构做好准备!