跳转到主要内容

TLS 支持

快速入门#

构建#

要构建带 TLS 支持的版本,您需要 OpenSSL 开发库(例如 Debian/Ubuntu 上的 libssl-dev)。

KeyDB 现在默认启用 TLS 进行构建,所有 KeyDB 的软件包和发行版都附带启用了 TLS。如果需要构建不支持 TLS 的版本,您需要运行 make BUILD_TLS=no

测试#

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

  1. 运行 ./utils/gen-test-certs.sh 来生成一个根 CA 和一个服务器证书。

  2. 运行 ./runtest --tls./runtest-cluster --tls 以在 TLS 模式下运行 KeyDB 和 Redis 集群测试。

手动运行#

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

./src/keydb-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

要使用 keydb-cli 连接到此 KeyDB 服务器:

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

这将禁用 TCP 并在端口 6379 上启用 TLS。也可以同时提供 TCP 和 TLS,但您需要为它们分配不同的端口。

要使副本使用 TLS 连接到主节点,请使用 --tls-replication yes;要使 KeyDB 集群在节点间使用 TLS,请使用 --tls-cluster yes

连接#

现在,所有套接字操作都通过一个连接抽象层进行,该层对调用者隐藏了 I/O 和读/写事件处理。

请注意,与 Redis 不同,KeyDB 完全支持 TLS 连接的多线程。

待办事项列表#

  • keydb-benchmark 的支持。目前的实现是混合使用 hiredis 进行解析和基本网络操作(建立连接),但大多数操作直接操纵套接字。为了实现适当的 TLS 支持,这需要进行清理。最好的方法可能是迁移到 hiredis 的异步模式。
  • keydb-cli 的 --slave--rdb 支持。

多端口#

考虑允许在单独的端口上配置 TLS 的影响,这会使 KeyDB 在多个端口上监听:

  1. 启动横幅中的端口通知
  2. 进程标题
  3. 副本如何宣告自己
  4. 集群总线端口计算