功能概述

Redis 从 v6 版本开始支持 SSL/TLS。TLS 当前不支持 I/O 多线程。详细操作步骤如下。

操作步骤

这里以操作系统 Ubuntu 18.04.5 为例。

步骤一:启用 TLS

  1. 执行以下命令行,下载 Redis 源码。

    wget https://download.redis.io/releases/redis-6.2.5.tar.gz
  2. 执行以下命令行,解压源码包。

    tar xf redis-6.2.5.tar.gz
  3. 执行以下命令行,进入解压目录。

    cd redis-6.2.5/
  4. 执行以下命令行,安装依赖包。

    apt-get update
    apt install make gcc libssl-dev libsystemd-dev tcl tcl-tls
  5. 执行以下命令行,编译并启用 TLS。

    make BUILD_TLS=yes

步骤二:配置证书

为了支持 TLS,Redis 必须配置 X.509 证书和私钥。

  1. 执行以下命令行,创建证书。

    ./utils/gen-test-certs.sh
  2. 执行以下命令行,查看证书文件。

    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
  3. 执行以下命令行,获取 TLS-Cert 项。

    cat ./tests/tls/redis.crt
  4. 执行以下命令行,获取 TLS-Key 项。

    cat ./tests/tls/redis.key
  5. 执行以下命令行,获取 TLS-CA-Cert 项。

    cat ./tests/tls/ca.crt
  6. 执行以下命令行,获取 TLS-DH-Params 项。

    cat ./tests/tls/redis.dh

步骤三:修改配置参数

为正常使用 TLS,用户还需要在 Console 页面配置 TLS 相关参数。操作详情参考修改配置参数。参数项说明如下。

参数 说明

端口

明文端口。

  • 设置为 0 表示关闭明文端口。开启 TLS-Port 时,需设置为 0

  • 不能设置为 80,且需与 Sentinel.TLS-PortTLS-Port 保持不同。

TLS-Port

TLS 加密端口。

  • 设置为 0 表示关闭端口。

  • 不能设置为 80,且需与 端口Sentinel.TLS-Port 保持不同。

Sentinel.TLS-Port

Redis 哨兵加密端口。

  • 设置为 0 表示关闭端口。

  • 不能设置为 80,且需与 端口TLS-Port 保持不同。

TLS-Cert

证书。配置为 redis.crt 文件中的内容。

TLS-Key

私钥。配置为 redis.key 文件中的内容。

TLS-CA-Cert

CA 证书。配置为 ca.crt 文件中的内容。

TLS-DH-Params

密匙交换参数。配置为 redis.dh 文件中的内容。

步骤四:验证 TLS

  1. 执行以下命令行,进行验证。<redis_instance_address> 为 Redis Standalone 集群的连接地址,<TLS-Port> 为 Redis Standalone 集群配置的 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
  2. 显示如下信息表示 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