Certbot生成证书配置Redis TLS失败,求正确证书文件及服务排查
Redis TLS配置问题排查与修正
一、证书文件的正确配置
你当前的tls-ca-cert-file配置有误,Let's Encrypt生成的证书对应Redis TLS参数的正确映射如下:
tls-cert-file:使用fullchain.pem(包含域名证书+中间证书链,你当前配置正确)tls-key-file:使用privkey.pem(私钥文件,配置正确)tls-ca-cert-file:应使用chain.pem(Let's Encrypt的中间证书链),而非cert.pem(cert.pem仅为你的域名证书本身,缺少中间链会导致证书信任验证失败)
修正后的redis.conf相关配置:
port 0 tls-port 6379 tls-cert-file /etc/letsencrypt/live/mydomain.com/fullchain.pem tls-key-file /etc/letsencrypt/live/mydomain.com/privkey.pem tls-ca-cert-file /etc/letsencrypt/live/mydomain.com/chain.pem
二、Redis Service启动失败的排查
既然直接运行/usr/bin/redis /etc/redis/redis.conf能正常工作,问题集中在systemd服务配置上,重点排查以下几点:
1. 证书目录权限问题
/etc/letsencrypt/live/目录默认权限为root:root且访问权限为700,Redis服务默认以redis用户运行,无法读取该目录下的证书文件。解决方法:
创建证书软链接到Redis用户可访问的目录:
sudo mkdir -p /etc/redis/certs sudo ln -s /etc/letsencrypt/live/mydomain.com/fullchain.pem /etc/redis/certs/ sudo ln -s /etc/letsencrypt/live/mydomain.com/privkey.pem /etc/redis/certs/ sudo ln -s /etc/letsencrypt/live/mydomain.com/chain.pem /etc/redis/certs/ sudo chown -R redis:redis /etc/redis/certs
然后修改redis.conf中的证书路径为/etc/redis/certs/xxx.pem。
2. Systemd服务文件指令错误
检查/lib/systemd/system/redis.service或/etc/systemd/system/redis.service中的ExecStart指令,部分发行版中Redis可执行文件名为redis-server而非redis,默认服务文件可能配置为:
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
如果你的可执行文件确实是redis,则修改该指令为:
ExecStart=/usr/bin/redis /etc/redis/redis.conf
修改后重新加载systemd配置并重启服务:
sudo systemctl daemon-reload sudo systemctl restart redis.service
3. 查看详细错误日志
通过以下命令获取启动失败的具体报错信息,进一步定位问题:
journalctl -u redis.service -xe
内容的提问来源于stack exchange,提问作者Sam Leurs
相关产品推荐
相关产品推荐

