使用 TLS 保护连接

本页面介绍了如何创建使用 TLS 协议的 Redis 实例,并说明在管理启用了 TLS 的 Redis 实例时,需要执行哪些任务。

如需了解 TLS 的一般行为和优势,请参阅 TLS 加密

如需查看用户在此页面上执行管理任务所需的权限列表,请参阅 TLS 权限

创建使用 TLS 的 Redis 实例

控制台

创建 Redis 实例时,选择启用传输层安全协议 (TLS)

gcloud

创建使用 TLS 的 Redis 实例,请输入以下命令,并将 variables 替换为适当的值:

gcloud beta redis instances create instance-id --transit-encryption-mode=SERVER_AUTHENTICATION --size=size --region=region-id

其中:

  • --transit-encryption-mode=SERVER_AUTHENTICATION 为您的实例启用 TLS。

下载证书授权机构

控制台

  1. 转到 Cloud Console 中的 Memorystore for Redis 页面。

    Memorystore for Redis

  2. 点击实例 ID 查看实例的“实例详情”页面。

  3. 点击 TLS 服务器证书下的下载下载全部按钮。

gcloud

如果您的实例上已启用 TLS,请运行以下命令,以查看证书授权机构的内容:

gcloud beta redis instances describe instance-id --region=region

响应正文中包含所有适用的证书授权机构。以下是 Memorystore for Redis 的证书授权机构 (CA) 示例:

-----BEGIN CERTIFICATE-----
MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkNzYx
NTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2YxOWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29n
bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH
b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE3MjEzNDE1WhcNMzAwOTE1
MjEzNTE1WjCBhTEtMCsGA1UELhMkNzYxNTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2Yx
OWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk
aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyDKmDHZm6tzMhNtKOnp8H
8+zTv1qA6OkBToVqCjKTTMGO18ovNtAAMjbGvclLuJNLbA2WTTWVttHen6Cn82h0
3gG9HMk9AwK1cVT7gW072h++TRsYddIRlwnSweRWL8jUX+PNt7CjFqH+sma/Hb1m
CktHdBOa897JiYHrMVNTcpS8SFwwz05yHUTEVGlHdkvlaJXfHLe6keCMABLyjaMh
1Jl4gZI2WqLMV680pJusK6FI6q/NmqENFc9ywMEg395lHTK9w9e014WIXg0q7sU3
84ChVVS2yYOMEUWeov4Qx6XeVfA4ss5t7OCqsMQkvslkE90mJZcVvhBj3QvTH9Rz
AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB
AJkn+MDE4V10DZn4uEc0s0Mg4FEMC1fDewmDYwSNnxRlzfEi+wAX2AaqrJ4m4Qa7
xIyuSYxArEOY6QeyJyw7/06dom8aAv4aO2p8hE04Ih6QwaTMFIlT2Jf6TidVd3eT
wfjwFJVoJ+dgxsaCv2uMFZWee5aRHmKzj9LhqPwpWnTs9Q/qmOheUNoe2/1i8yvn
662M7RZMR7fZH6ETsdz5w1nPXXiRqJ7K0EGKoPNjMlYK3/U1X3sazI4tpMNgTdxG
rnNh9Sd9REMBmDCPj9dUI9k4hQX4yQZp96fnLT6cet22OPajEKnpzyqJs1s4iX/g
lEtWs4V/YBhKA56CW6ASZS8=
-----END CERTIFICATE-----

临时复制并保存所有 CA,以便您在访问 Redis 实例的客户端上安装这些 CA。

在客户端上安装证书授权机构

您必须在用于连接的客户端上安装 Redis 实例的证书授权机构。CA 安装可能因客户端类型而异。以下步骤介绍了如何在 Compute Engine Linux 虚拟机上安装 CA。

  1. 通过 SSH 连接到您的 Compute Engine Linux 客户端。此客户端必须与您的 Redis 实例位于同一区域才能与其建立连接。

  2. 通过运行以下命令在客户端中创建名为 server_ca.pem 的文件:

    sudo vim /tmp/server_ca.pem
    
  3. 下载证书授权机构,将其粘贴到之前创建的 server_ca.pem 文件中。

    CA 文字必须采用正确的格式:

    • 复制整个证书授权机构,包括 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 在内。
    • 请确保 CA 的文字完全靠左对齐。CA 所在行前面不应有空格。

为 TLS 配置客户端

您用于连接到 Redis 实例的客户端必须支持 TLS 或第三方辅助信息文件才能启用 TLS 支持。

如果您的客户端支持 TLS,请将其配置为指向您的 Redis 实例的 IP 地址、端口 6378 和包含证书授权机构的文件。如果您选择使用辅助信息文件,我们建议您使用安全通道

其他客户端配置

某些客户端默认不接受自签名证书,并且需要进行其他配置。

例如,Letcuce 是一种较为热门的适用于 Redis 的 Java 客户端。其文档提供了原生使用 TLS 进行连接的示例(请参阅示例 47)。 如果默认情况下,Java Security Manager 不允许使用自签名证书,则需要在 Redis URI 构造 .withVerifyPeer(false) 中指定一个额外的选项。

使用安全通道和 telnet 安全地连接到 Redis 实例

如需了解如何使用安全通道在 Compute Engine 客户端上启用 TLS,请参阅使用安全通道和 telnet 安全地连接到 Redis 实例

管理证书授权机构轮替

您应该在访问 Redis 实例的客户端上安装所有可下载的证书授权机构。

在不卸载原有 CA 的情况下安装新 CA 是最简便的方法,可确保在发生证书授权机构轮替事件时拥有必要的 CA。

在引入新的证书授权机构时,运行如下命令可查看新 CA 的内容:

gcloud beta instances describe instance-id --region=region

接下来,复制最新的证书授权机构并将其粘贴到客户端中用于保存先前的 CA 的文件中。

此文件应采用以下格式。CA 的顺序无关紧要。

-----BEGIN CERTIFICATE-----
MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkNzYx
NTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2YxOWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29n
bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH
b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE3MjEzNDE1WhcNMzAwOTE1
MjEzNTE1WjCBhTEtMCsGA1UELhMkNzYxNTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2Yx
OWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk
aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyDKmDHZm6tzMhNtKOnp8H
8+zTv1qA6OkBToVqCjKTTMGO18ovNtAAMjbGvclLuJNLbA2WTTWVttHen6Cn82h0
3gG9HMk9AwK1cVT7gW072h++TRsYddIRlwnSweRWL8jUX+PNt7CjFqH+sma/Hb1m
CktHdBOa897JiYHrMVNTcpS8SFwwz05yHUTEVGlHdkvlaJXfHLe6keCMABLyjaMh
1Jl4gZI2WqLMV680pJusK6FI6q/NmqENFc9ywMEg395lHTK9w9e014WIXg0q7sU3
84ChVVS2yYOMEUWeov4Qx6XeVfA4ss5t7OCqsMQkvslkE90mJZcVvhBj3QvTH9Rz
AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB
AJkn+MDE4V10DZn4uEc0s0Mg4FEMC1fDewmDYwSNnxRlzfEi+wAX2AaqrJ4m4Qa7
xIyuSYxArEOY6QeyJyw7/06dom8aAv4aO2p8hE04Ih6QwaTMFIlT2Jf6TidVd3eT
wfjwFJVoJ+dgxsaCv2uMFZWee5aRHmKzj9LhqPwpWnTs9Q/qmOheUNoe2/1i8yvn
662M7RZMR7fZH6ETsdz5w1nPXXiRqJ7K0EGKoPNjMlYK3/U1X3sazI4tpMNgTdxG
rnNh9Sd9REMBmDCPj9dUI9k4hQX4yQZp96fnLT6cet22OPajEKnpzyqJs1s4iX/g
lEtWs4V/YBhKA56CW6ASZS8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkYjg4
ZTUzYTMtODdmNC00N2VhLWJjN2MtYTdhMzM4NmIwZmU4MTEwLwYDVQQDEyhHb29n
bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH
b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE4MjEzMTI3WhcNMzAwOTE2
MjEzMjI3WjCBhTEtMCsGA1UELhMkYjg4ZTUzYTMtODdmNC00N2VhLWJjN2MtYTdh
MzM4NmIwZmU4MTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk
aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDEO4Zs/So5DA6wtftkAElD
8BVREob4gby2mGBYAtd3JJQKFC+zIqCf2DhrWihrCeXhsdsZqJUF16E3MsCCWS2T
UWt6T37zObU2fzKmb7X+TSw1tunIUcIXwWzoMhqdGrIvfI9guMbF+KssQIjDMs9M
G/hY6cY1NB5THOxXqcxzYrwSKB1EE160EDz4RgKAYQhw7AyVOBBAbWqA5pTEDuUy
qpsz+NFpKYTwaeTpzil0xIl0JJS3DOd4G7ZnMG2wFT2j3wt+P0SkAPuOWgmX82iO
gGmKoaCh3KcICie/rZRTfsRPjMm+yswRQRDeLB5eoMmH+gbUInVZU0qOJ/7gOYEb
AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB
AF4xlEbwLUK5VjoKlJBtKXLYrYcW+AbQLhZQFP8exE8bOW7p39h+5J0nl3ItPxu6
97BCt1P5TFisba8pBxaExiDsYmjKQrhtizMkzl5h9hGksOgoLlAqaaxfA97+Q9Tq
5gaYChESur/159Z3jiM47obKoZmHfgSgr//7tjII7yZxUGhOjIVffv/fEa4aixqM
0yH1V1s8hWHZeui2VFrHmTxY20IH9ktyedjSUgnFXzsEH6sbR18p0wBZqyrrtURs
DaUIeoOHfHgEJM8k/wphSJI0V6pMC6nax2JhexLTRiUsiGTLRDe3VtsdWqS2DLa9
9DmrfdF0eFrfWw3VRNLwwXg=
-----END CERTIFICATE-----

要确保拥有所需 CA,您需要确保已将在客户端文件中保存的 CA 与 gcloud redis instances describe 显示的 CA 匹配。在轮替事件开始后,有多个 CA 可以确保充足的轮替时间,并将停机时间控制在最短。

后续步骤