一尘不染

如何使用SSL设置Docker Redis容器

docker

我正在关注教程。

就我而言,我在Docker环境中运行,并且有一个受保护的站点(即https://
localhost
)。这需要安全的SSL通信。

我调整了 网络celery 容器以确保安全连接。
但是我不知道如何配置Redis容器以实现与ssl的安全连接。
请注意,当我在 Webcelery 容器中没有ssl连接的情况下运行时,连接就可以了。

如何使用SSL配置和运行Redis?

谢谢


编辑:

我按照教程设置ssl的redis,并按照教程通过Docker容器中的stunnel设置ssl的redis。

redis-cli通过使用来自本地主机的以下调用,从本地主机(通过stunnel)调用redis docker容器,我成功地测试了从本地主机到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 conf文件 -redis / conf / redis.conf

...
requirepass foobared
...

Redis服务器Stunnel conf文件 -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客户端隧道conf文件-/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

阅读 627

收藏
2020-06-17

共1个答案

一尘不染

Redis本身并不提供SSL,您必须自己做。有一篇关于它的深入文章,您可以阅读和关注。或者,如果您想使用Dockerized解决方案,则可以使用像thisthis这样的现成映像。要将Celery设置为可通过SSL与Redis一起使用时,只需遵循文档即可

2020-06-17