redis server 服务端配置 ssl 证书

创建日期: 2025-02-27 16:29 | 作者: 风波 | 浏览次数: 32 | 分类: Redis

如果有防火墙禁止明文使用 redis,可以通过如下方式解决

1. 生成 ssl 证书

1.1 安装 openssl

apt install openssl -y

1.2 生成 ssl 证书 (有效期365天)

openssl req -x509 -newkey rsa:4096 -nodes -keyout redis.key -out redis.crt -days 365

2. 配置 redis.conf

增加如下几行配置

tls-port 6378
tls-cert-file /data/ca/redis.crt
tls-key-file /data/ca/redis.key
tls-auth-clients no

其中的 tls-auth-clients 表示不进行客户端的证书认证,只进行服务端的证书认证。

3. 启动服务

services:
  redis_debug:
    image: redis:7.2.4
    command:
      - "redis-server"
      - "/data/ca/redis.conf"
      - "--save"
      - "60"
      - "1"
      - "--loglevel"
      - "warning"
    ports:
      - "11328:6378"
      - "11329:6379"
    user: root
    network_mode: bridge
    hostname: redis-server
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
      - ./redis/data:/data

4. 测试 redis 服务

因为使用的是自签名的证书,所以需要制定参数 ssl_cert_reqs=None

4.1 连接方式一

rds = redis.Redis.from_url("rediss://172.17.0.1:11328/0", ssl_cert_reqs=None)

4.2 连接方式二

rds = redis.Redis(
    host='localhost',
    port=11328,
    ssl=True,
    #ssl_certfile='redis/data/ca/client.crt',  # 客户端证书
    #ssl_keyfile='redis/data/ca/client.key',   # 客户端私钥
    #ssl_ca_certs='/path/to/ca.crt',      # CA 证书
    ssl_cert_reqs=None,                  # 禁用证书验证
)
32 浏览
0 评论