我正在关注本教程。
就我而言,我在Docker环境中运行,并且有一个受保护的站点(即https:// localhost)。这需要安全的SSL通信。
我调整了 网络 和 celery 容器以确保安全连接。 但是我不知道如何配置Redis容器以实现与ssl的安全连接。 请注意,当我在 Web 和 celery 容器中没有ssl连接的情况下运行时,连接就可以了。
如何使用SSL配置和运行Redis?
谢谢
编辑:
我按照本教程设置ssl的redis,并按照本教程通过Docker容器中的stunnel设置ssl的redis。
redis-cli通过使用来自本地主机的以下调用,从本地主机(通过stunnel)调用redis docker容器,我成功地测试了从本地主机到redis docker容器的连接:
redis-cli
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
Redis本身并不提供SSL,您必须自己做。有一篇关于它的深入文章,您可以阅读和关注。或者,如果您想使用Dockerized解决方案,则可以使用像this或this这样的现成映像。要将Celery设置为可通过SSL与Redis一起使用时,只需遵循文档即可。