dot Redis 8 已发布——它是开源的

了解更多

Redis Cloud 推出短生命周期 TLS 证书

我们正在调整一些安全实践。您需要了解以下事项以确保顺利过渡。

作为 Redis 不断改进安全措施承诺的一部分,我们很快将开始替换所有 Redis Cloud 数据库服务的 TLS 证书,转而使用由公众信任的 GlobalSign 证书颁发机构签发的短生命周期证书。

这些即将进行的变更会给您带来什么好处?

简而言之:更好的安全性。 

稍微详细的回答是,目前使用的 TLS 证书是由自签名证书颁发机构 (CA) 签发的。这意味着没有受信任的第三方验证这些证书是否代表 Redis 签发。

不过,无需担心。您仍然可以——也应该!——下载我们在 Redis Cloud 管理控制台中发布的公共证书包。该证书包可以向您保证,我们的数据库服务提供的证书确实是由 Redis 签名的。

然而,新的 TLS 证书是由一个名为 GlobalSign 的公众信任 CA 签发的,这意味着您不必仅仅相信我们关于证书可信度的说法。 

在此背景下,“公众信任”至少意味着两件事

  • 这些受信任的 CA 会定期接受审计。这意味着它们在确认为其签发证书的组织的身份方面遵循严格的政策和程序。
  • GlobalSign 的根证书默认随附在大多数网络浏览器和操作系统中并受到信任。因此,您的 Redis 客户端很可能已经信任 GlobalSign 颁发机构。

一旦我们引入 GlobalSign 证书,它们将以“短生命周期”证书的形式签发。这被认为是安全最佳实践;您可以咨询您的首席信息安全官 (CISO)!在我们这里,这意味着我们的数据库服务向您的 Redis 客户端提供的叶证书有效期为三个月。我们将在这些证书到期前自动轮换它们。

由于您的 Redis 客户端应该已经信任 GlobalSign CA(稍后会详细介绍),因此在这些叶证书轮换后,任何新连接都应该能够无缝建立;现有连接不受影响。

如何判断您是否会受到影响

如果您尚未在任何 Redis Cloud 数据库上启用 TLS,则无需执行任何操作。

如果您当前在 Redis Cloud 中有启用 TLS 的数据库,则应确保您的 Redis 客户端在更改前后都能继续接受数据库证书。(有关如何操作,请参阅下文。)

那么您何时会收到这些新证书呢?这取决于您的 Redis Cloud 订阅层级以及您的订阅创建时间

层级订阅创建日期受影响日期说明
固定层级任何时间2023 年 4 月 15 日所有固定层级数据库目前仍使用旧的自签名证书。从 4 月 15 日起,这些证书将逐步替换为新的 GlobalSign 证书。 
灵活层级2022 年 11 月 30 日之前2023 年 7 月 1 日订阅在 2022 年 11 月 30 日之前创建的任何灵活层级数据库目前仍使用旧的自签名证书。从 7 月 1 日起,这些证书将逐步替换为新的 GlobalSign 证书。 
灵活层级2022 年 11 月 30 日之后不适用订阅在 2022 年 11 月 30 日或之后创建的任何灵活层级数据库已经收到新的证书。如果您的 Redis 客户端目前可以通过 TLS 连接,则无需采取任何行动。

如何确保您的 Redis 客户端在更改前后都信任数据库证书?

如果您的 Redis 客户端配置为验证数据库提供的证书(并非总是如此),那么它会尝试确认该证书是由它信任的证书链签名的。通常,这种信任是通过直接向 Redis 客户端提供数据库证书的公共证书链,或将其添加到客户端的信任存储(取决于您的环境,这可能是您的操作系统或 Kubernetes 信任存储,或 jks 文件)来建立的。

例如,使用 redis-cli ,您可以将数据库的公共证书链提供给客户端,如本例所示。cacert 参数应指向一个包含 PEM 格式的公共数据库证书的文件

~ redis-cli -h <host> -p <port> --tls --cacert <path to>/redis_ca.pem

如上所述,Redis Cloud 数据库的公共证书发布在 Redis Cloud 管理控制台中,可以在“账户设置”和“数据库配置”页面中找到。(更多详情,请参阅 TLS 文档。)如果您在 2022 年 8 月之后下载过此公共证书链,则该 PEM 文件包含旧自签名证书链以及新 GlobalSign 证书的根 CA。如果您在 2022 年 8 月之前下载过此公共证书链,请务必下载最新版本并更新您的 Redis 客户端信任存储。

为确保安全,您可以使用 Java 附带的 keytool 来检查此 PEM 包。在 Linux 上,您可以使用 certtool。它看起来像这样

~ keytool -printcert -file <path to>/redis_ca.pem | grep "Owner:"
Owner: CN=SSL Certification Authority, O=Garantia Data
Owner: CN=RCP Intermediate Certificate Authority, O=RedisLabs, ST=CA, C=US
Owner: CN=RedisLabs Root Certificate Authority, O=RedisLabs, L=CA, ST=CA, C=US
Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3

PEM 包应包含四个证书:GlobalSign 根 CA,以及用于固定层级和灵活层级订阅的旧证书的三个自签名证书链。 

如果您的客户端信任存储包含所有四个证书,那么您应该是安全的;一旦我们开始迁移到 GlobalSign 证书,预计过渡将顺利进行。如果您的 Redis 客户端信任存储不包含 GlobalSign 根 CA 证书,请立即采取行动,以确保您的客户端在迁移后不会拒绝 TLS 连接。

常见问题 (FAQs)

如果我受影响但未采取行动,会发生什么?

如果您受影响并且您的 Redis 客户端在过渡后不信任 GlobalSign 签发的证书,您的 Redis 客户端很可能会开始拒绝连接到您的数据库。

我尚未在 Redis Cloud 数据库上启用 TLS。我需要做些什么吗?

如果您目前完全没有使用 TLS,则无需采取任何行动。如果您将来某个时候希望启用 TLS,请务必届时下载 Redis Cloud CA 公共证书 PEM 包并提供给您的 Redis 客户端。

我的订阅是在 2022 年 11 月 30 日之后创建的。我需要做些什么吗?

对于在 2022 年 11 月 30 日之后创建的订阅,任何灵活层级数据库都已配置了由 GlobalSign 签发的新 TLS 证书。因此,如果您目前可以通过 TLS 成功连接,那么您应该没有问题。

*请注意,固定层级数据库仍将进行过渡。请确保您的 Redis 客户端的信任存储包含旧证书链和新 GlobalSign 证书链的公共证书。

我在 2022 年 8 月之后下载了 PEM 包。我需要做些什么吗?

如果您的 Redis 客户端使用的是在 2022 年 8 月或之后下载的 Redis Cloud PEM 包,那么原则上您应该没有问题。我们仍然建议您花时间确保该包包含 GlobalSign 根 CA。(没有人喜欢惊喜。特别是这种惊喜。)

如何确认提供给 Redis 客户端的 PEM 包包含 GlobalSign 根 CA?

您可以使用 Java 附带的 keytool 检查此 PEM 包

~ keytool -printcert -file <path to>/redis_ca.pem | grep "Owner:"
Owner: CN=SSL Certification Authority, O=Garantia Data
Owner: CN=RCP Intermediate Certificate Authority, O=RedisLabs, ST=CA, C=US
Owner: CN=RedisLabs Root Certificate Authority, O=RedisLabs, L=CA, ST=CA, C=US
Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3

或者,在 Linux 上,您也可以使用 certtool.

如何确认 PEM 包包含由 GlobalSign 发布的官方根 CA?

您可以使用 Java 附带的 keytool 检查从 Redis Cloud 下载的 PEM 包,并找到由 GlobalSign 颁发的第四个证书的前几行

~ keytool -printcert -file <path to>/redis_ca.pem
[...]
Certificate[4]:
Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3
Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3
Serial number: 4000000000121585308a2
Valid from: Wed Mar 18 12:00:00 IST 2009 until: Sun Mar 18 12:00:00 IST 2029
Certificate fingerprints:
	 SHA1: D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:AD
[...]

现在,将 PEM 包中证书的 SHA1 指纹与 GlobalSign 根证书官方发布的 R3 GlobalSign 根证书的指纹进行比较。如果指纹匹配,则可以确定 PEM 包中的证书确实是 GlobalSign 发布的 R3 根 CA 的公共证书。 


PEM 包包含什么?

如果您在 2022 年 8 月或之后下载,PEM 包包含以下四个证书

编号颁发者说明到期日期
1SSL 认证机构固定层级根 CA (自签名)2023 年 9 月
2RCP 中级认证机构灵活层级中级证书2028 年 2 月
3RedisLabs 根认证机构灵活层级根 CA (自签名)2038 年 2 月
4GlobalSignGlobalSign 根 CA2029 年 3 月

新的 PEM 包何时到期?我应该多久更换一次?

我们现在要求您做出的更改是信任 GlobalSign 根 CA(如果您的 Redis 客户端尚未信任它)。这个 GlobalSign 根 CA 应该有效期至 2029 年 3 月,因此如果我们考虑到一些提前期,在未来五年内我们很可能不会要求您更换它。

如何检查数据库提供的证书的颁发者?

您可以使用 openssl 包进行此操作,如下所示。如果颁发者不是 GlobalSign则您的数据库尚未收到短生命周期证书。

~ openssl s_client -showcerts -connect \
 <hostname>:<port> 2> /dev/null < /dev/null | grep '^issuer'
何时可以安全地从 Redis 客户端的信任存储中移除旧的 Redis 自签名公共证书?

如果您成功确认您的数据库向您的 Redis 客户端提供了由 GlobalSign 信任链签发的证书(参见上一个问题),则可以安全地从信任存储中移除其他 Redis 自签名公共证书。一旦整个 Redis Cloud 机群迁移到新证书,我们将在 Redis Cloud 管理控制台中发布一个新的 PEM 包,其中只包含相关的 GlobalSign 根 CA。

此更改与我的 redis_user.crt 和 redis_user_private.key 文件有何关系?

redis_user.crt 和 redis_user_private.key 文件属于您可能在 Redis Cloud 控制台中为“TLS 客户端认证”创建的证书,数据库通过该证书认证您的客户端。这些客户端证书不受此更改的影响(尽管客户端证书也可能过期,应及时更换)。