管理传输加密

本页面介绍了如何在 Redis 实例创建期间启用传输内加密,以及如何为实例管理传输加密。传输加密使用传输层安全 (TLS) 协议。

如需了解使用传输加密的一般行为和优势,请参阅传输加密

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

您只能在最初创建 Redis 实例时才能启用传输加密。通过这种方式创建的实例不能停用传输加密。

创建使用传输加密的 Redis 实例

控制台

创建 Redis 实例时,选择启用传输加密

gcloud

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

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

其中:

  • --transit-encryption-mode=SERVER_AUTHENTICATION 会为您的实例启用传输加密。

下载证书授权机构

控制台

  1. 前往 Google Cloud 控制台中的 Memorystore for Redis 页面。

    Memorystore for Redis

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

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

gcloud

如果您的实例上已启用传输加密,则在您运行以下命令时会看到证书授权机构的内容:

gcloud 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 客户端。

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

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

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

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

为传输加密配置客户端

您用于连接到 Redis 实例的客户端必须支持 TLS 或使用第三方 Sidecar 启用 TLS。

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

其他客户端配置

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

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

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

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

管理证书授权机构轮替

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

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

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

gcloud redis 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 可以确保充足的轮替时间,并将停机时间控制在最短。

后续步骤