Redis 6.0 Docker容器使用SSL/TLS
创始人
2025-05-30 09:59:54
0

前言

最近,公司在做渗透测试,要求redis使用加密传输。经过比较redis各版本,发现redis6.0开始正式支持TLS 通道加密,更加安全。redis6.0以下版本只支持数据加密,最新版本为redis7.0。考虑到redis7.0刚出不久,新的功能项目也暂时用不上。故此决定选用redis6.2.11(6.0的最新稳定版)。

先决条件

  • 安装了 Docker。

  • Docker Compose 已安装。

Redis 容器镜像获取

访问docker官网:

https://hub.docker.com/_/redis/tags?page=2

点击Tags:

找到我们想要的版本,获取下载命令:docker pull redis:6.2.11

在服务器上分别运行:

docker pull redis:6.2.11   
docker images  

看到上图结果,说明redis 容器镜像下载成功。

运行Redis容器

让我们先在没有 TLS 的情况下运行 Redis 容器

创建一个文件compose.yml并粘贴下面的内容。

services:redis:image: redis:6.2.11network_mode: "host"volumes: #/home/10config/redis/redis.conf 是宿主机路径,必须存在#/usr/local/etc/redis/redis.conf 是redis容器路径- /home/10config/redis/redis.conf:/usr/local/etc/redis/redis.conf  restart: alwayscontainer_name: legrand_redis6.2.11_v1privileged: truecommand: redis-server /usr/local/etc/redis/redis.conf

redis.conf 可以在redis的安装包获取。

redis.conf 百度网盘下载路径 提取码:ju3h

运行容器:

docker-compose up -d    #启动容器
docker exec -it legrand_redis6.2.11_v1 /bin/bash  #进入容器

运行docker exec -it legrand_redis6.2.11_v1 /bin/bash,出现如下图,说明容器运行成功。

生成证书

为了使用 TLS 运行 Redis,我们需要提供自己的 SSL 证书。您可以购买一个,或者对于这个我们不需要购买的用例,但为我们的 Redis 实例和连接到它的客户端生成我们自己的自签名证书。

运行脚本

#!/bin/sh
mkdir -p tests/tlsopenssl genrsa -out tests/tls/ca.key 2048
openssl req \-x509 -new -nodes -sha256 \-key tests/tls/ca.key \-days 36500 \-subj '/O=Redis Test/CN=Certificate Authority' \-out tests/tls/ca.crtopenssl genrsa -out tests/tls/redis.key 2048openssl req \-new -sha256 \-key tests/tls/redis.key \-subj '/O=Redis Test/CN=Server' | \openssl x509 \-req -sha256 \-CA tests/tls/ca.crt \-CAkey tests/tls/ca.key \-CAserial tests/tls/ca.txt \-CAcreateserial \-days 36500 \-out tests/tls/redis.crtopenssl dhparam -out tests/tls/redis.dh 2048

注意:证书默认有效期为1年 ,-days 可以设置证书有效期 ,单位天

得到以下文件:

其中:

ca.crt :服务器证书

ca.key:服务器私钥

redis.crt:客户端证书

redis.key:客户端私钥

配置TLS

services:redis:image: redis:6.2.11network_mode: "host"volumes: #/home/10config/redis/redis.conf 是宿主机路径,必须存在#/usr/local/etc/redis/redis.conf 是redis容器路径- /home/10config/redis/redis.conf:/usr/local/etc/redis/redis.conf #挂载到宿主机的证书路径,使容器能访问到证书 - /home/3redis/tests/tls:/tlsrestart: alwayscontainer_name: legrand_redis6.2.11_v1privileged: truecommand: redis-server /usr/local/etc/redis/redis.conf

redis.conf 增加以下配置

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 0  #关闭非tls端口
tls-port 6379################################## TLS 配置 ###################################
tls-cert-file /tls/redis.crt
tls-key-file /tls/redis.key
tls-ca-cert-file /tls/ca.crt
#tls-dh-params-file /tls/redis.dh
tls-auth-clients yes

启动TLS容器

docker-compose up -d
docker exec -it legrand_redis6.2.11_v1 /bin/bash
# 以tls方式连接redis客户端
redis-cli --tls \
--cert /tls/redis.crt \
--key /tls/redis.key \
--cacert /tls/ca.crt

至此Redis TLS Docker容器配置成功。

参考文档

https://devpress.csdn.net/redis/62ed1a027e668234661807b8.html

Spring-Data-Redis和Redisson TLS连接方式

请参考:Spring-Data-Redis 和 Redisson TLS/SSL 连接

相关内容

热门资讯

中证A500ETF摩根(560... 8月22日,截止午间收盘,中证A500ETF摩根(560530)涨1.19%,报1.106元,成交额...
A500ETF易方达(1593... 8月22日,截止午间收盘,A500ETF易方达(159361)涨1.28%,报1.104元,成交额1...
何小鹏斥资约2.5亿港元增持小... 每经记者|孙磊    每经编辑|裴健如 8月21日晚间,小鹏汽车发布公告称,公司联...
中证500ETF基金(1593... 8月22日,截止午间收盘,中证500ETF基金(159337)涨0.94%,报1.509元,成交额2...
中证A500ETF华安(159... 8月22日,截止午间收盘,中证A500ETF华安(159359)涨1.15%,报1.139元,成交额...
科创AIETF(588790)... 8月22日,截止午间收盘,科创AIETF(588790)涨4.83%,报0.760元,成交额6.98...
创业板50ETF嘉实(1593... 8月22日,截止午间收盘,创业板50ETF嘉实(159373)涨2.61%,报1.296元,成交额1...
港股异动丨航空股大幅走低 中国... 港股航空股大幅下跌,其中,中国国航跌近7%表现最弱,中国东方航空跌近5%,中国南方航空跌超3%,美兰...
电网设备ETF(159326)... 8月22日,截止午间收盘,电网设备ETF(159326)跌0.25%,报1.198元,成交额409....
红利ETF国企(530880)... 8月22日,截止午间收盘,红利ETF国企(530880)跌0.67%,报1.034元,成交额29.0...