视频

了解更多
我们正在调整一些安全实践。您需要了解以下事项以确保顺利过渡。
作为 Redis 不断改进安全措施承诺的一部分,我们很快将开始替换所有 Redis Cloud 数据库服务的 TLS 证书,转而使用由公众信任的 GlobalSign 证书颁发机构签发的短生命周期证书。
简而言之:更好的安全性。
稍微详细的回答是,目前使用的 TLS 证书是由自签名证书颁发机构 (CA) 签发的。这意味着没有受信任的第三方验证这些证书是否代表 Redis 签发。
不过,无需担心。您仍然可以——也应该!——下载我们在 Redis Cloud 管理控制台中发布的公共证书包。该证书包可以向您保证,我们的数据库服务提供的证书确实是由 Redis 签名的。
然而,新的 TLS 证书是由一个名为 GlobalSign 的公众信任 CA 签发的,这意味着您不必仅仅相信我们关于证书可信度的说法。
在此背景下,“公众信任”至少意味着两件事
一旦我们引入 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 客户端提供数据库证书的公共证书链,或将其添加到客户端的信任存储(取决于您的环境,这可能是您的操作系统或 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 连接。
如果您受影响并且您的 Redis 客户端在过渡后不信任 GlobalSign 签发的证书,您的 Redis 客户端很可能会开始拒绝连接到您的数据库。
如果您目前完全没有使用 TLS,则无需采取任何行动。如果您将来某个时候希望启用 TLS,请务必届时下载 Redis Cloud CA 公共证书 PEM 包并提供给您的 Redis 客户端。
对于在 2022 年 11 月 30 日之后创建的订阅,任何灵活层级数据库都已配置了由 GlobalSign 签发的新 TLS 证书。因此,如果您目前可以通过 TLS 成功连接,那么您应该没有问题。
*请注意,固定层级数据库仍将进行过渡。请确保您的 Redis 客户端的信任存储包含旧证书链和新 GlobalSign 证书链的公共证书。
如果您的 Redis 客户端使用的是在 2022 年 8 月或之后下载的 Redis Cloud 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.
您可以使用 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 的公共证书。
如果您在 2022 年 8 月或之后下载,PEM 包包含以下四个证书
编号 | 颁发者 | 说明 | 到期日期 |
---|---|---|---|
1 | SSL 认证机构 | 固定层级根 CA (自签名) | 2023 年 9 月 |
2 | RCP 中级认证机构 | 灵活层级中级证书 | 2028 年 2 月 |
3 | RedisLabs 根认证机构 | 灵活层级根 CA (自签名) | 2038 年 2 月 |
4 | GlobalSign | GlobalSign 根 CA | 2029 年 3 月 |
我们现在要求您做出的更改是信任 GlobalSign 根 CA(如果您的 Redis 客户端尚未信任它)。这个 GlobalSign 根 CA 应该有效期至 2029 年 3 月,因此如果我们考虑到一些提前期,在未来五年内我们很可能不会要求您更换它。
您可以使用 openssl 包进行此操作,如下所示。如果颁发者不是 GlobalSign,则您的数据库尚未收到短生命周期证书。
~ openssl s_client -showcerts -connect \
<hostname>:<port> 2> /dev/null < /dev/null | grep '^issuer'
如果您成功确认您的数据库向您的 Redis 客户端提供了由 GlobalSign 信任链签发的证书(参见上一个问题),则可以安全地从信任存储中移除其他 Redis 自签名公共证书。一旦整个 Redis Cloud 机群迁移到新证书,我们将在 Redis Cloud 管理控制台中发布一个新的 PEM 包,其中只包含相关的 GlobalSign 根 CA。
redis_user.crt 和 redis_user_private.key 文件属于您可能在 Redis Cloud 控制台中为“TLS 客户端认证”创建的证书,数据库通过该证书认证您的客户端。这些客户端证书不受此更改的影响(尽管客户端证书也可能过期,应及时更换)。