排查 SSL/TLS 连接建立问题 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

排查 SSL/TLS 连接建立问题

Amazon DynamoDB 正在将终端节点移至保护由 Amazon Trust Services (ATS) 证书颁发机构 (而不是第三方证书颁发机构) 签发的证书。2017 年 12 月,我们通过 Amazon Trust Services 颁发的安全证书启动了 EU-WEST-3(巴黎)区域。2017 年 12 月之后启动的所有新区域都有终端节点,这些终端节点具有由 Amazon Trust Services 颁发的证书。本指南向您介绍如何验证和解决 SSL/TLS 连接问题。

测试您的应用程序或服务

大多数 AWS SDKs 和命令行界面 (CLI) 支持 Amazon Trust Services 证书颁发机构。如果您使用的是 2013 年 10 月 29 日之前发布的 Python AWS 开发工具包或 CLI 版本,则必须进行升级。.NET、Java、PHP、Go、JavaScript 和 C++ SDKs 以及 CLI 不会捆绑任何证书,其证书来自底层操作系统。Ruby 开发工具包自 2015 年 6 月 10 日起至少包含了一个必需的 CAs。在该日期之前,Ruby V2 开发工具包没有将证书打包。如果您使用的是不受支持、自定义或修改的 AWS 开发工具包版本,或者使用自定义信任存储,则您可能没有 Amazon Trust Services 证书颁发机构所需的支持。

要验证对 DynamoDB 终端节点的访问,您需要开发一个测试,以访问 EU-WEST-3 区域中的 DynamoDB API 或 DynamoDB Streams API 并验证 TLS 握手是否成功。在此类测试中,您需要访问的特定终端节点包括:

如果您的应用程序不支持 Amazon Trust Services 证书颁发机构,您将看到以下故障之一:

  • SSL/TLS 协商错误

  • 在您的软件收到指示 SSL/TLS 协商失败的错误之前的长延迟。延迟时间取决于客户端的重试策略和超时配置。

测试客户端浏览器

要验证您的浏览器是否可以连接到 Amazon DynamoDB,请打开以下 URL:https://dynamodb.eu-west-3.amazonaws.com。如果测试成功,您将看到如下消息:

healthy: dynamodb.eu-west-3.amazonaws.com

如果测试不成功,它将显示类似于以下内容的错误:https://untrusted-root.badssl.com/

更新软件应用程序客户端

访问 DynamoDB 或 DynamoDB Streams API 终端节点(无论是通过浏览器还是以编程方式)的应用程序需要更新客户端计算机上的受信任 CA 列表(如果它们尚不支持以下任何 CAs):

  • Amazon Root CA 1

  • Starfield Services Root Certificate Authority – G2

  • Starfield Class 2 Certification Authority

如果客户端已信任上述三个 CAs 中的任意一个,则这些将信任 DynamoDB 使用的证书,并且无需执行任何操作。但是,如果您的客户端尚未信任上述任何 CAs,则与 DynamoDB 或 DynamoDB Streams APIs 的 HTTPS 连接将失败。有关更多信息,请访问此博客文章:https://aws.amazon.com/blogs/security/how-to-prepare-for-aws-move-to-its-own-certificate-authority/

更新客户端浏览器

您可以在浏览器中更新证书捆绑包,只需更新浏览器即可。有关最常见的浏览器的说明可在浏览器网站上找到:

手动更新证书捆绑包

如果您无法访问 DynamoDB API 或 DynamoDB Streams API,则需要更新证书捆绑包。为此,您需要导入至少一个必需的 CAs。 您可以在 https://www.amazontrust.com/repository/ 中找到这些内容。

以下操作系统和编程语言支持 Amazon Trust Services 证书:

  • 安装了 2005 年 1 月版或更高版本的 Microsoft Windows 版本、Windows Vista、Windows 7、Windows Server 2008 和更新版本。

  • Mac OS X 10.4(带 Java for Mac OS X 10.4 版本 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 更新 2 和所有较新版本,包括 Java 6、Java 7 和 Java 8

如果您仍然无法连接,请参阅您的软件文档、操作系统供应商或联系 AWS Support https://aws.amazon.com/support