本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
更新您的 Amazon DocumentDB TLS 证书
Amazon DocumentDB 集群的证书颁发机构 (CA) 证书将于 2024 年 8 月开始更新。如果您使用 Amazon DocumentDB 集群时启用了传输层安全性协议(TLS) (默认设置),而且您没有轮换您的客户端应用程序和服务器证书,则需要执行以下步骤以避免您的应用程序与 Amazon DocumentDB 集群之间发生连接性问题。
作为 Amazon DocumentDB 的标准维护和安全最佳实践的一部分,CA 和服务器证书已更新。客户端应用程序必须将新的 CA 证书添加到其信任存储中,且现有 Amazon DocumentDB 实例必须更新为在此到期日期之前使用新的 CA 证书。
更新您的应用程序和 Amazon DocumentDB 集群
按照此部分中的步骤更新应用程序的 CA 证书捆绑包(步骤 1),以及您集群的服务器证书(步骤 2)。在将变更应用于生产环境之前,我们强烈建议您在开发环境或登台环境中测试这些步骤。
注意
必须在您拥有 Amazon DocumentDB 集群的每个 AWS 区域 中,完成步骤 1 和步骤 2。
步骤 1:下载新的 CA 证书并更新您的应用程序
下载新的 CA 证书并更新您的应用程序,以便使用新的 CA 证书创建与 Amazon DocumentDB 的 TLS 连接。从 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pemglobal-bundle.pem
的文件。
注意
如果您要访问包含旧 CA 证书 (rds-ca-2019-root.pem
) 和新 CA 证书(rds-ca-rsa2048-g1
、rds-ca-rsa4096-g1
、rds-ca-ecc384-g1
)的密钥库,请验证密钥库是否选择了 global-bundle
。
wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
接下来,更新应用程序以使用新的证书捆绑包。新 CA 捆绑包同时包含旧 CA 证书 (rds-ca-2019) 和新 CA 证书 (rds-ca-rsa2048-g1、rds-ca-rsa4096-g1、rds-ca-ecc384-g1)。新的 CA 捆绑包中同时包含这两个 CA 证书,您可以通过两个步骤来更新应用程序和集群。
对于 Java 应用程序,必须使用新的 CA 证书创建新的信任存储。有关说明,请参阅 启用了 TLS 的情况下的连接 主题中的 Java 选项卡。
要验证您的应用程序使用的是否是最新的 CA 证书捆绑包,请参阅我如何确定我使用的是最新的 CA 捆绑包?。如果您已在应用程序中使用最新的 CA 证书捆绑包,则可跳至步骤 2。
有关将 CA 捆绑与您的应用程序结合使用的示例,请参阅 加密传输中数据 和 启用了 TLS 的情况下的连接。
注意
目前,MongoDB Go Driver 1.2.1 只接受 sslcertificateauthorityfile
中的一个 CA 服务器证书。有关如何在启用 TLS 时使用 Go 连接到 Amazon DocumentDB,请参阅启用了 TLS 的情况下的连接。
步骤 2:更新服务器证书
在更新应用程序以使用新的 CA 捆绑包后,下一步是通过修改 Amazon DocumentDB 集群中每个实例来更新服务器证书。要修改实例以使用新的服务器证书,请参阅以下说明。
Amazon DocumentDB 提供以下 CA 来签署数据库实例的数据库服务器证书。
-
rds-ca-ecc384-g1 — 使用具有 ECC 384 私有密钥算法和 SHA384 签名算法的证书颁发机构。此 CA 支持服务器证书自动轮换。这目前仅在 Amazon DocumentDB 4.0 和 5.0 上受支持。
-
rds-ca-rsa2048-g1—在大多数 AWS 区域中,使用具有 RSA 2048 私有密钥算法和 SHA256 签名算法的证书颁发机构。此 CA 支持服务器证书自动轮换。
-
rds-ca-rsa4096-g1—使用具有 RSA 4096 私有密钥算法和 SHA384 签名算法的证书颁发机构。此 CA 支持服务器证书自动轮换。
注意
如果您使用的是 AWS CLI,则可以使用 describe-certificates 查看上面列出的证书颁发机构的有效性。
这些 CA 证书包含在区域和全球证书捆绑包中。当您将 rds-ca-rsa2048-g1、rds-ca-rsa4096-g1 或 rds-ca-ecc384-g1 CA 用于数据库时,Amazon DocumentDB 会管理数据库上的数据库服务器证书。Amazon DocumentDB 会在数据库服务器证书过期前自动轮换。
注意
如果集群运行在以下引擎修订版本上,Amazon DocumentDB 不需要重启即可进行证书轮换:
Amazon DocumentDB 3.6:1.0.208662 或更高版本
Amazon DocumentDB 4.0:2.0.10179 或更高版本
Amazon DocumentDB 5.0:3.0.4780 或更高版本
您可以通过运行以下命令来确定当前的 Amazon DocumentDB 引擎修补版本:db.runCommand({getEngineVersion: 1})
。
在更新服务器证书之前,请确保您已完成 步骤 1。
故障排除
如果您在证书轮换过程中遇到集群连接问题,我们建议您执行以下操作:
-
验证您的客户端是否使用最新的证书捆绑包。请参阅 我如何确定我使用的是最新的 CA 捆绑包?。
-
验证您的实例是否使用最新的证书。请参阅 如何知道我的哪些 Amazon DocumentDB 实例在使用旧/新的服务器证书?。
-
验证您的应用程序是否在使用最新证书 CA。某些驱动程序(如 Java 和 Go)需要额外的代码,才能将多个证书从证书捆绑包导入到信任存储中。有关使用 TLS 连接到 Amazon DocumentDB 的更多信息,请参阅 以编程方式连接到 Amazon DocumentDB。
-
请联系客户支持人员。如果您有任何疑问或问题,请联系 AWS Support
。
常见问题
以下是有关 TLS 证书的一些常见问题的答案。
如果我有疑问或问题,应该怎么办?
如果您有任何疑问或问题,请联系 AWS Support
如何知道我是否在使用 TLS 连接我的 Amazon DocumentDB 集群?
您可以通过检查集群的集群参数组的 tls
参数来确定您的集群是否使用 TLS。如果将 tls
参数设置为 enabled
,则表示您正在使用 TLS 证书连接到您的集群。有关更多信息,请参阅 管理 Amazon DocumentDB 集群参数组。
为什么要更新 CA 和服务器证书?
作为 Amazon DocumentDB 的标准维护和安全最佳实践的一部分,CA 和服务器证书正在更新。当前的 CA 和服务器证书将于 2024 年 8 月起到期。
如果我在到期日之前没有采取任何行动会怎样?
如果您使用 TLS 连接您的 Amazon DocumentDB 集群,并且在 2024 年 8 月之前没有更改证书,那么通过 TLS 连接的应用程序将无法再与 Amazon DocumentDB 集群通信。
Amazon DocumentDB 将不会在到期之前自动轮换您的数据库证书。您必须在到期日之前或之后更新应用程序和集群以使用新的 CA 证书。
如何知道我的哪些 Amazon DocumentDB 实例在使用旧/新的服务器证书?
要识别仍在使用旧服务器证书的 Amazon DocumentDB 实例,您仍然可以使用旧服务器证书,您也可以使用 Amazon DocumentDB AWS Management Console或 AWS CLI。
要识别集群中正在使用旧证书的实例
登录到 AWS Management Console 并打开 Amazon DocumentDB 控制台,网址:https://console.aws.amazon.com/docdb
。 -
从屏幕右上方的区域列表中,选择实例所在的 AWS 区域。
-
在控制台左侧的导航窗格中,选择集群。
-
Certificate authority (证书颁发机构) 列(靠近表格最右端)会显示哪些实例仍在使用旧的服务器证书(
rds-ca-2019
),哪些实例正在使用新的服务器证书(rds-ca-rsa2048-g1
)。
要识别集群中正在使用旧服务器证书的实例,请使用带以下的 describe-db-clusters
命令。
aws docdb describe-db-instances \ --filters Name=engine,Values=docdb \ --query 'DBInstances[*].{CertificateVersion:CACertificateIdentifier,InstanceID:DBInstanceIdentifier}'
如何修改 Amazon DocumentDB 集群中的单个实例以更新服务器证书?
我们建议您在给定集群中同时更新所有实例的服务器证书。要修改您的集群中的实例,可以使用控制台或 AWS CLI。
注意
在更新服务器证书之前,请确保您已完成步骤 1。
登录到 AWS Management Console 并打开 Amazon DocumentDB 控制台,网址:https://console.aws.amazon.com/docdb
。 -
在屏幕右上方的区域列表中,选择集群所在的区域 AWS 区域 。
-
在控制台左侧的导航窗格中,选择集群。
-
Certificate authority (证书颁发机构) 列(靠近表格最右端)会显示哪些实例仍在使用旧的服务器证书 (
rds-ca-2019
)。 -
在 Clusters(集群)表的 Cluster identifier(集群标识符)下,选择要修改的实例。
-
选择 Actions(操作),然后选择 Modify(修改)。
-
在 Certificate authority (证书颁发机构) 下,为此实例选择新的服务器证书(
rds-ca-rsa2048-g1
)。 -
在下一页上可以看到所做更改的摘要。请注意,在修改实例之前,会有一个额外的警报提醒您确保应用程序使用的是最新的证书 CA 捆绑包,以免造成连接中断。
-
可以选择在下一个维护时段内应用修改,也可以立即应用。
-
选择修改实例以完成更新。
完成以下步骤,以使用 AWS CLI 为现有 Amazon DocumentDB 实例标识和轮换旧服务器证书。
-
要立即修改实例,请对集群中的每个实例执行下面的命令。
aws docdb modify-db-instance --db-instance-identifier
<yourInstanceIdentifier>
--ca-certificate-identifier rds-ca-rsa2048-g1 --apply-immediately -
要修改集群中的实例,以便在集群的下一个维护时段中使用新的 CA 证书,请对集群中的每个实例执行以下命令。
aws docdb modify-db-instance --db-instance-identifier
<yourInstanceIdentifier>
--ca-certificate-identifier rds-ca-rsa2048-g1 --no-apply-immediately
如果我向现有集群中添加新的实例,会怎么样?
创建的所有新实例都将使用旧的服务器证书,并且需要使用旧的 CA 证书的 TLS 连接。2024 年 1 月 25 日之后创建的任何新 Amazon DocumentDB 实例将默认使用新证书 rds-ca-rsa2048-g1。
如果我的集群发生实例替换或故障转移,会怎么样?
如果集群中有实例替换,则创建的新实例将继续使用该实例以前使用的服务器证书。我们建议您同时更新所有实例的服务器证书。如果集群中发生失效转移,则使用新主实例上的服务器证书。
如果我没有使用 TLS 连接到我的集群,我还需要更新每个实例吗?
我们强烈建议启用 TLS。如果未启用 TLS,我们仍然建议您在将来计划使用 TLS 连接集群时轮换 Amazon DocumentDB 实例上的证书。如果您从未计划使用 TLS 连接到 Amazon DocumentDB 集群,则不需要执行操作。
如果我目前没有使用 TLS 连接到集群,但计划将来这样做,该怎么办?
如果您的集群是在 2024 年 1 月之前创建的,请按照上一部分中的步骤 1 和步骤 2 进行操作,以确保您的应用程序使用的是更新后的 CA 捆绑包,且每个 Amazon DocumentDB 实例使用的都是最新的服务器证书。如果您的集群是在 2025 年 1 月 25 日之后创建的,那么您的集群已经具有最新的服务器证书 (rds-ca-rsa2048-g1)。要验证您的应用程序使用的是否是最新的 CA 捆绑包,请参阅如果我没有使用 TLS 连接到我的集群,我还需要更新每个实例吗?
截止日期能否延至 2024 年 8 月以后?
如果您的应用程序通过 TLS 进行连接,则无法延长截止日期。
我如何确定我使用的是最新的 CA 捆绑包?
要验证是否在使用最新的捆绑包,您可以使用以下命令。要运行此命令,必须安装 java,并且 java 工具必须位于 Shell 的 PATH 变量中。有关更多信息,请参阅使用 Java
keytool -printcert -v -file global-bundle.pem
keytool -printcert -v -file global-bundle.p7b
为什么我在 CA 捆绑包的名称中看到 “RDS”?
对于某些管理功能,例如证书管理,Amazon DocumentDB 使用与 Amazon Relational Database Service (Amazon RDS) 共享的操作技术。
新的证书何时到期?
新服务器证书将(通常)按以下方式过期:
-
rds-ca-rsa2048-g1 — 2061 过期
-
rds-ca-rsa4096-g1 — 2121 过期
-
rds-ca-ecc384-g1 — 2121 过期
如果我在证书到期之前未采取行动,会看到什么样的错误?
错误消息因驱动程序而异。通常,您会看到含有“证书已过期”字符串的证书验证错误。
如果我应用了新的服务器证书,我可以恢复为使用旧的服务器证书吗?
如果您需要将实例恢复为使用旧的服务器证书,建议您对集群中的所有实例都执行此操作。您可以通过使用 AWS Management Console 或 AWS CLI 来还原集群中每个实例的服务器证书。
登录到 AWS Management Console 并打开 Amazon DocumentDB 控制台,网址:https://console.aws.amazon.com/docdb
。 -
在屏幕右上方的区域列表中,选择集群所在的区域 AWS 区域 。
-
在控制台左侧的导航窗格中,选择集群。
-
在 Clusters(集群)表的 Cluster identifier(集群标识符)下,选择要修改的实例。选择 Actions (操作),然后选择 Modify (修改)。
-
在 Certificate authority (证书颁发机构) 下,您可以选择旧的服务器证书 (
rds-ca-2019
)。 -
选择 Continue (继续) 以查看修改摘要。
-
在显示的页面中,您可以选择安排在下一个维护时段中应用修改,或立即应用修改。进行选择,然后选择 Modify instance (修改实例)。
注意
如果您选择立即应用修改,则该操作也将同时应用等待修改队列中的所有更改。如果任何待处理修改需要停机,选择此选项可导致意外停机。
aws docdb modify-db-instance --db-instance-identifier
<db_instance_name>
ca-certificate-identifier rds-ca-2019<--apply-immediately | --no-apply-immediately>
如果您选择 --no-apply-immediately
,则将在集群的下一个维护时段内应用所做的更改。
如果我从快照还原或执行时间点还原,它会有新的服务器证书吗?
如果在 2024 年 8 月之后还原快照或执行时间点还原,则创建的新集群将使用新 CA 证书。
如果我在从 Mac OS 直接连接到我的 Amazon DocumentDB 集群时遇到问题,该怎么办?
Mac OS 已更新对可信证书的要求。现在,可信证书的有效期必须不超过 397 天(请参阅 https://support.apple.com/en-us/HT211025
注意
在较新版本的 Mac OS 中会出现这种限制。
Amazon DocumentDB 实例证书的有效期超过四年,超过 Mac 操作系统的最大有效期。要从运行 Mac OS 的计算机直接连接到 Amazon DocumentDB 集群,您必须在创建 TLS 连接时允许使用无效证书。在这种情况下,无效证书是指其有效期超过 397 天。在连接到 Amazon DocumentDB 集群时,您应在允许使用无效证书之前了解风险。
要使用 AWS CLI 从 Mac OS 连接到 Amazon DocumentDB 集群,请使用 tlsAllowInvalidCertificates
参数。
mongo --tls --host <hostname> --username <username> --password <password> --port 27017 --tlsAllowInvalidCertificates