在 Debian 上 Nginx + SSL 异常 是很常见的问题,但通常不是“SSL 本身坏了”,而是配置、权限、证书路径或系统变化导致的。下面按最常见原因 → 排查方法 → 解决办法给你梳理。
Debian 默认:
www-data 运行/etc/ssl/、/etc/letsencrypt/常见错误
ssl_certificate /root/ssl/fullchain.pem;
ssl_certificate_key /root/ssl/privkey.pem;
❌ Nginx 无权读取 /root
✅ 正确做法:
chmod 644 fullchain.pem
chmod 600 privkey.pem
chown root:root privkey.pem
并放在:
/etc/ssl/nginx/
snakeoil 默认证书很多新手复制了默认配置:
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
浏览器会提示 “不受信任”
✅ 解决:使用真实证书(Let’s Encrypt)
Debian + Nginx + Certbot 常见问题:
certbot 更新证书检查:
ls -l /etc/letsencrypt/live/yourdomain/
修复:
chmod 644 fullchain.pem
chmod 600 privkey.pem
典型错误:
listen 443;
# 忘了
ssl on;
✅ 现代写法(推荐):
listen 443 ssl;
检查配置:
nginx -t
Debian 常见:
ufw status
确保:
443/tcp ALLOW
或 iptables:
iptables -L -n
Debian 12:
❌ 错误:
ssl_protocols TLSv1 TLSv1.1;
✅ 推荐:
ssl_protocols TLSv1.2 TLSv1.3;
Debian 默认无 SELinux,但有:
# 1. 检查配置
nginx -t
# 2. 查看错误日志
journalctl -u nginx -e
# 或
tail -n 50 /var/log/nginx/error.log
# 3. 测试端口
ss -lntp | grep 443
# 4. 测试访问
curl -I https://yourdomain.com
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/nginx/fullchain.pem;
ssl_certificate_key /etc/ssl/nginx/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html;
}
你可以贴出:
nginx -t 输出error.log 相关错误server {} 配置cat /etc/os-release)我可以直接告诉你是哪一步出了问题 ✅