dot 快速的未来即将在您的城市举办活动。

加入我们参加 Redis 发布会

Redis 云推出短暂 TLS 证书

我们正在更改部分安全措施。以下内容将帮助您顺利过渡。

作为我们持续改进 Redis 安全措施的承诺的一部分,我们很快将开始用由 公开信赖 的 GlobalSign 证书颁发机构颁发的短暂证书替换所有 Redis 云数据库 服务的 TLS 证书

您将从这些即将进行的更改中获得什么好处?

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

较长的解释是,目前使用的 TLS 证书是由 自签名 证书颁发机构 (CA) 颁发的。这意味着没有可信的第三方验证这些证书是否代表 Redis 颁发。

不过,您无需担心。您仍然可以(并且应该!)下载我们的公共证书捆绑包,该捆绑包在 Redis 云 管理控制台 中发布。该捆绑包可以向您保证,Redis 真正签署了我们的数据库服务提供的证书。

但是,新的 TLS 证书是由名为 GlobalSign 的公开信赖的 CA 颁发的,这意味着您无需相信我们关于证书可信度的说法。

在此情况下,“公开信赖”至少意味着两件事

  • 这些信赖的 CA 会定期接受审计。这意味着他们会遵守有关他们确认代表其颁发证书的组织身份的方式的严格政策和程序。
  • GlobalSign 的根证书默认情况下包含在大多数 Web 浏览器和操作系统中,并且这些浏览器和操作系统都信赖这些证书。因此,您的 Redis 客户端可能已经信赖 GlobalSign 颁发机构。

一旦我们推出 GlobalSign 证书,它们将作为“短暂”证书颁发。这被认为是一种安全最佳实践;问问您的 CISO!就我们而言,这意味着由我们的数据库服务提供给您的 Redis 客户端的 叶子证书 将有效期为三个月。我们将在证书到期日期之前很久自动轮换这些证书。

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

如何确定您是否会受到影响

如果您没有在任何 Redis 云数据库上启用 TLS,则无需执行任何操作。

如果您当前在 Redis 云中启用了 TLS 的数据库,则应确保在更改前后您的 Redis 客户端将继续接受数据库证书。(请参阅以下内容了解如何执行此操作。)

那么您应该何时才能使用这些新证书?这取决于您的 Redis 云订阅层级以及您的订阅何时配置

层级订阅配置日期受影响日期说明
固定任何时候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 云数据库的公共证书在 Redis 云管理控制台中发布,您可以从“帐户设置”和“数据库配置”页面访问该控制台。(有关详细信息,请参阅 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 连接。

常见问题解答 (FAQ)

如果我受到影响但没有采取任何措施,会发生什么?

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

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

如果您目前根本没有使用 TLS,则无需执行任何操作。如果您在将来的某个时间想启用 TLS,请确保在那个时候下载 Redis 云 CA 公共证书 PEM 捆绑包并将其提供给您的 Redis 客户端。

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

在 2022 年 11 月 30 日之后创建订阅的任何灵活层数据库都使用 GlobalSign 颁发的新的 TLS 证书进行配置。因此,如果您目前可以通过 TLS 成功连接,那么您应该是安全的。

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

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

如果您的 Redis 客户端使用在 2022 年 8 月或之后下载的 Redis 云 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 云下载的 PEM 捆绑包,并查找 GlobalSign 颁发的证书编号 4 的前几行

~ 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 Cloud 控制台中为“TLS 客户端身份验证”创建的证书属于 redis_user.crt 和 redis_user_private.key 文件,通过该证书数据库验证您的客户端。这些客户端证书不受此更改的影响(尽管客户端证书也会过期,应及时更换)。