为PostgreSQL配置SSL加密
最后更新于
services:
db:
image: postgres:18
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "your-password"
POSTGRES_DB: your_db
ports:
- "5432:5432"
volumes:
- ./pgdata:/var/lib/postgresql #数据
- ./init:/docker-entrypoint-initdb.d #初始化的时候执行的脚本
- ./backup:/backup #用于输出备份文件
- ./letsencrypt:/etc/letsencrypt #kavehbc/free-ssl-cloudflare输出的证书会定期同步到这里
- ./ssl:/etc/ssl/ #实际Postgresql使用的证书
- ./scripts:/scripts #一些脚本ssl = on
ssl_key_file = '/etc/ssl/server.key'
ssl_cert_file = '/etc/ssl/server.crt'cp /etc/letsencrypt/live/your-domain.com/fullchain.pem /etc/ssl/server.crt
cp /etc/letsencrypt/live/your-domain.com/privkey.pem /etc/ssl/server.key
chown postgres:postgres /etc/ssl/server.crt /etc/ssl/server.key
chmod 600 /etc/ssl/server.key
chmod 644 /etc/ssl/server.crt
psql -U postgres -c "SELECT pg_reload_conf();host all all 192.168.1.0/24 scram-sha-256hostssl all all all scram-sha-256conn: Connection = psycopg.connect(
conninfo=db_uri,
sslmode="verify-full",
sslrootcert=certifi.where(),
)