如何使用ssl设置Docker redis容器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ssl设置Docker redis容器相关的知识,希望对你有一定的参考价值。

我正在关注this教程。

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

我已调整webcelery容器以进行安全连接。但是我不知道如何配置Redis容器与ssl进行安全连接请注意,当我在webcelery容器中没有ssl连接的情况下运行时,连接很好。

我如何使用ssl配置和运行redis?

谢谢


编辑:

[我遵循this教程使用ssl设置redis,this教程通过Docker容器中的stunnel使用ssl设置redis。

通过使用来自本地主机的以下调用,通过从本地主机(通过通道)调用redis-cli到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服务器路径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,您必须自己做。有关于它的in-depth post,您可以阅读和关注。或者,如果您想使用Dockerized解决方案,则可以使用this onethis one之类的可用映像。设置Celery以通过SSL与Redis一起使用时,只需遵循documentation

以上是关于如何使用ssl设置Docker redis容器的主要内容,如果未能解决你的问题,请参考以下文章

Docker&Nginx-设置SSL

如何在 Docker 容器中向 Tomcat 添加 SSL 证书?

Docker 容器虚拟主机 SSL 配置

无法让 SSL 在 Docker 容器中工作

Docker-compose + Nginx SSL反向代理

在 docker 容器内使用带有 ssl 的自托管(Jetty)元数据库时出错