Redis【有与无】【Admin-8】加密(TLS支持)

本文基于Redis 6.0.9版本,前提至少 Redis 3.0或更高版本。

目录

1.加密(TLS支持)

1.1.入门

1.1.1.Building

1.1.2.Tests

1.2.手动运行

1.3.证书配置

1.4.TLS侦听端口

1.5.客户端证书认证

1.6.复制(Replication)

1.7.Cluster

1.8.哨兵(Sentinel)

1.9.附加配置

1.10.性能考量

1.11.局限性


1.加密(TLS支持)

Redis从版本6开始支持SSL/TLS,这是一项可选功能,需要在编译时启用。

1.1.入门

1.1.1.Building

要使用TLS支持进行构建,你将需要OpenSSL开发库(例如Debian/Ubuntu上的libssl-dev)。

运行make BUILD_TLS=yes

1.1.2.Tests

要使用TLS运行Redis测试套件,你需要为TCL提供TLS支持(即Debian/Ubuntu上的tcl-tls软件包)。

  • 运行./utils/gen-test-certs.sh生成根CA和服务器证书。
  • 运行./runtest --tls./runtest-cluster --tls,以TLS模式运行Redis和Redis群集测试。

1.2.手动运行

要以TLS模式手动运行Redis服务器(假设已调用gen-test-certs.sh,因此示例证书/键可用):

./src/redis-server --tls-port 6379 --port 0 \
    --tls-cert-file ./tests/tls/redis.crt \
    --tls-key-file ./tests/tls/redis.key \
    --tls-ca-cert-file ./tests/tls/ca.crt

要使用redis-cli连接到此Redis服务器:

./src/redis-cli --tls \
    --cert ./tests/tls/redis.crt \
    --key ./tests/tls/redis.key \
    --cacert ./tests/tls/ca.crt

1.3.证书配置

为了支持TLS,必须为Redis配置X.509证书和私钥。 此外,在验证证书时,必须指定要用作可信根的CA证书捆绑文件或路径。 为了支持基于DH的密码,还可以配置DH params文件。 例如:

tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
tls-ca-cert-file /path/to/ca.crt
tls-dh-params-file /path/to/redis.dh

1.4.TLS侦听端口

tls-port配置伪指令可在指定端口上接受SSL/TLS连接。 除了侦听TCP连接的端口外,因此可以同时使用TLS和non-TLS连接访问不同端口上的Redis。

你可以指定port 0以完全禁用 non-TLS 端口。 要仅在默认Redis端口上启用TLS,请使用:

port 0
tls-port 6379

1.5.客户端证书认证

默认情况下,Redis使用双向TLS,并要求客户端使用有效证书进行身份验证(根据由ca-cert-file或ca-cert-dir指定的受信任根CA进行身份验证)。

你可以使用tls-auth-clients no禁用客户端身份验证。

1.6.复制(Replication)

Redis主节点以相同的方式处理连接客户端和复制节点,因此上述tls-port和tls-auth-clients指令也适用于复制链接( replication links )。

在复制节点端,必须指定tls-replication yes才能将TLS用于到主节点的传出连接。

1.7.Cluster

使用Redis群集时,请使用tls-cluster yes以便为群集总线和跨节点连接启用TLS。

1.8.哨兵(Sentinel)

Sentinel从通用Redis配置继承其网络配置,因此上述所有内容也适用于Sentinel。

连接到主节点时,Sentinel将使用tls-replication指令来确定是否需要TLS或non-TLS连接。

1.9.附加配置

可以使用其他TLS配置来控制TLS协议版本,密码(ciphers)和密码套件( cipher suites)等的选择。有关更多信息,请查阅自记录的redis.conf。

1.10.性能考量

TLS由于对SSL连接进行读写(writing/reading)操作,加密/解密(encryption/decryption)和完整性检查而给通信堆栈增加了一层开销。 因此,使用TLS会导致每个Redis实例可实现的吞吐量下降(有关更多信息,请参阅此讨论)。

1.11.局限性

TLS当前不支持I/O线程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴 韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值