I'm following this tutorial.
In my case I am operating in a Docker environment, and I have a secured site (i.e. https://localhost). which requires secured ssl communication.
I adjusted the web, and celery containers for secure connection.
But I don't know how to configure the Redis container for secure connection with ssl
Note that when I run without ssl connection in the web and celery containers, the connection is fine.
How do I configure and run redis with ssl?
Thanks
EDIT:
I followed this tutorial to set redis with ssl and this tutorial to set redis with ssl via stunnel in Docker container.
I successfully tested the connection from my localhost to the redis docker container, by invoking redis-cli
from localhost (via stunnel) to the redis docker container, using the following call from the localhost:
redis-cli -h 127.0.0.1 -p 6381
127.0.0.1:6381> auth foobared
OK
127.0.0.1:6381>
Related files on the redis server Docker side:
docker-compose file (my webapp includes multiple services, but to for simplification I removed all services except for the redis container):
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 container 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 server redis conf file - redis/conf/redis.conf
...
requirepass foobared
...
redis server stunnel conf file - 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
Related files on the client side (localhost):
redis client stunnel conf file - /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 doesn't provide SSL by itself, you have to do it yourself. There's an in-depth post about it which you can read and follow. Or, if you want to use a Dockerized solution, you can use ready images like this one or this one. When it comes to setting up Celery to work with Redis over SSL, just follow the documentation.