【发布时间】:2020-05-31 19:56:44
【问题描述】:
我正在关注this 教程。
就我而言,我在 Docker 环境中运行,并且我有一个安全站点(即https://localhost)。这需要安全的 ssl 通信。
我调整了 web 和 celery 容器以实现安全连接。
但我不知道如何配置 Redis 容器以实现与 ssl 的安全连接
请注意,当我在 web 和 celery 容器中不使用 ssl 连接运行时,连接正常。
如何使用 ssl 配置和运行 redis?
谢谢
编辑:
我按照 this 教程使用 ssl 设置 redis 和 this 教程通过 Docker 容器中的 stunnel 使用 ssl 设置 redis。
我成功地测试了从本地主机到 redis docker 容器的连接,方法是使用来自本地主机的以下调用从本地主机(通过 stunnel)调用 redis-cli 到 redis docker 容器:
redis-cli -h 127.0.0.1 -p 6381
127.0.0.1:6381> auth foobared
OK
127.0.0.1:6381>
redis服务器Docker端的相关文件:
docker-compose 文件(我的 webapp 包含多个服务,但为了简单起见,我删除了除 redis 容器之外的所有服务):
version: '3'
services:
redis:
build:
context: ./redis
dockerfile: Dockerfile
restart: always
command: sh -c "stunnel /stunnel_take2.conf && /usr/local/bin/redis-server /etc/redis/redis.conf"
expose:
- '6379'
ports:
- "6379:6379"
volumes:
- /home/avner/avner/certs:/etc/certs
- /home/avner/avner/redis/conf:/etc/redis
redis 容器 Dockerfile
FROM redis:5-alpine
RUN apk add --no-cache \
stunnel~=5.56 \
python3~=3.8
COPY stunnel-redis-server.conf /
WORKDIR /
ENV PYTHONUNBUFFERED=1
redis 服务器 redis 配置文件 - redis/conf/redis.conf
...
requirepass foobared
...
redis 服务器 stunnel 配置文件 - redis/stunnel-redis-server.conf
cert = /etc/certs/private.pem
pid = /var/run/stunnel.pid
[redis]
accept = 172.19.0.2:6380
connect = 127.0.0.1:6379
客户端(本地主机)的相关文件:
redis 客户端 stunnel 配置文件 - /etc/stunnel/redis-client.conf
cert = /etc/cert/private.pem
client = yes
pid = /var/run/stunnel.pid
[redis]
accept = 127.0.0.1:6381
connect = 172.19.0.2:6380
【问题讨论】: