在 Debian 上使用 Nginx 配置 SSL 失败,原因通常比较集中。下面按最常见 → 较少见给你系统梳理一下,并给出排查方法。
Nginx 启动用户是 www-data,读不到证书就会失败。
典型错误
SSL_CTX_use_PrivateKey_file(...) failed
cannot load certificate
检查
ls -l /etc/ssl/...
ps aux | grep nginx
正确做法
chmod 644 fullchain.pem
chmod 600 privkey.pem
chown root:root /etc/ssl/...
⚠️ 证书不能放在 /home/xxx 下(权限限制)
常见错误示例:
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
但:
cert.pem 而不是 fullchain.pemlisten 443 ssl;✅ 最小可用配置:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/example/fullchain.pem;
ssl_certificate_key /etc/ssl/example/privkey.pem;
}
很多人改完不测试:
nginx -t
systemctl reload nginx
❌ 只改文件不 reload = 没生效
Debian 默认可能没开:
ufw allow 443/tcp
# 或
iptables -L
云服务器还要看:
浏览器会直接报错(不是 Nginx 失败)
解决:
certbot --nginx
失败原因:
老 Debian(如 10)自带 Nginx 较旧:
nginx -v
建议:
apt install nginx
或加官方源
Debian 上 snap 版 certbot 经常坑:
which certbot
建议:
apt install certbot python3-certbot-nginx
nginx -t
systemctl status nginx
journalctl -xeu nginx
openssl x509 -in fullchain.pem -noout -text
把下面信息发我:
我可以直接帮你改到能用。