TLS 加密
功能概述
用户可配置 TLS 加密,关闭明文端口,并让集群通信使用加密端口,以避免数据被泄漏和篡改。
Redis 从 v6 版本开始支持 SSL/TLS。TLS 当前不支持 I/O 多线程。这里以操作系统 Ubuntu 18.04.5 为例,详细介绍如何配置 TLS 加密。
操作步骤
步骤一:系统启用 TLS
-
执行以下命令行,下载 Redis 源码。
wget https://download.redis.io/releases/redis-6.2.5.tar.gz -
执行以下命令行,解压源码包。
tar xf redis-6.2.5.tar.gz -
执行以下命令行,进入解压目录。
cd redis-6.2.5/ -
执行以下命令行,安装依赖包。
apt-get update apt install make gcc libssl-dev libsystemd-dev tcl tcl-tls -
执行以下命令行,编译并启用 TLS。
make BUILD_TLS=yes
步骤二:配置证书
为了支持 TLS,Redis 必须配置 X.509 证书和私钥。
-
执行以下命令行,创建证书。
./utils/gen-test-certs.sh -
执行以下命令行,查看证书文件。
ls ./tests/tls/可以看到生成以下文件。
ca.crt ca.key ca.txt client.crt client.key openssl.cnf redis.crt redis.dh redis.key server.crt server.key -
执行以下命令行,获取 TLS-Cert 项。
cat ./tests/tls/redis.crt -
执行以下命令行,获取 TLS-Key 项。
cat ./tests/tls/redis.key -
执行以下命令行,获取 TLS-CA-Cert 项。
cat ./tests/tls/ca.crt -
执行以下命令行,获取 TLS-DH-Params 项。
cat ./tests/tls/redis.dh
步骤三:修改配置参数
为正常使用 TLS,用户还需要在 Console 页面配置 TLS 相关参数。操作详情参考修改配置参数。参数项说明如下。
| 参数 | 说明 |
|---|---|
端口 |
明文端口。
|
TLS-Port |
TLS 加密端口。
|
TLS-Cluster |
Cluster 通信是否使用加密端口。
|
TLS-Cert |
证书。配置为 |
TLS-Key |
私钥。配置为 |
TLS-CA-Cert |
CA 证书。配置为 |
TLS-DH-Params |
密匙交换参数。配置为 |
步骤四:验证 TLS
-
执行以下命令行,进行验证。
<redis_instance_address>为 Redis Cluster 集群的连接地址,<TLS-Port>为 Redis Cluster 集群配置的 TLS 端口号,均需根据实际情况进行替换。./src/redis-cli -h <redis_instance_address> -p <TLS-Port> --tls --cert ./tests/tls/redis.crt --key ./tests/tls/redis.key --cacert ./tests/tls/ca.crt Info Server -
显示如下信息表示 TLS 配置成功。
redis_version:6.2.5 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:12957d9199f59509 redis_mode:cluster os:Linux 4.15.0-58-generic x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:c11-builtin gcc_version:7.5.0 process_id:5186 process_supervised:no run_id:582101ac9ac0314b265439da67d00854d5d19a70 tcp_port:6379 server_time_usec:1635753556324954 uptime_in_seconds:5395 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:8363604 executable:/opt/redis/current/redis-server config_file:/data/redis/redis.conf io_threads_active:0