温馨提示×

为什么Debian Nginx SSL失败

小樊
46
2026-10-17 08:23:29
栏目: 云计算

Debian 上 Nginx 的 SSL 失败原因非常多,下面按最常见 → 较少见的顺序帮你系统梳理,并给出排查方法。你可以对照看是哪一类。


一、证书/私钥问题(最常见)

1. 证书路径不对

Nginx 配置中:

ssl_certificate     /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;

常见问题:

  • 文件不存在
  • 路径写错
  • 证书和 key 不匹配

✅ 检查:

ls -l /etc/nginx/ssl/
nginx -t

2. 证书和私钥不匹配

openssl x509 -noout -modulus -in example.com.crt | openssl md5
openssl rsa -noout -modulus -in example.com.key | openssl md5

两个 md5 必须一致。


3. 证书链不完整

只放了 example.com.crt,没有中间证书(Intermediate CA)

✅ 正确做法(合并):

cat example.com.crt intermediate.crt > fullchain.crt

然后:

ssl_certificate /etc/nginx/ssl/fullchain.crt;

二、Nginx 配置问题

4. 没有监听 443

server {
    listen 443 ssl;
    ...
}

❌ 错误示例:

listen 443;
# 没有 ssl;

5. Debian 没启用 ssl 模块(极少但存在)

nginx -V 2>&1 | grep ssl

应该看到 --with-http_ssl_module


三、权限问题(Debian 特有常见)

6. 证书文件权限太开放

Debian + Nginx 会直接报错:

SSL_CTX_use_PrivateKey_file failed

✅ 推荐权限:

chmod 600 /etc/nginx/ssl/*.key
chown root:root /etc/nginx/ssl/*.key

7. www-data 无法读取证书

sudo -u www-data cat /etc/nginx/ssl/example.com.key

四、防火墙 / 端口问题

8. 443 端口没开

ss -tulnp | grep 443

或

ufw allow 443/tcp

五、系统/时间问题

9. 系统时间错误导致证书“未生效/已过期”

date

证书是未来时间也会失败。


六、Let’s Encrypt 特殊情况

10. certbot 没正确配置 nginx

certbot --nginx

常见错误:

  • 手动改了配置
  • 用了 fullchain.pem 但路径错

✅ 正确路径:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

七、快速自检清单(建议你照做)

nginx -t
journalctl -u nginx -xe
openssl s_client -connect example.com:443

如果你愿意,我可以更精确帮你

请把以下信息发我:

  1. nginx -t 输出
  2. Nginx 443 server 配置
  3. 错误日志(/var/log/nginx/error.log)
  4. 证书来源(自签 / Let’s Encrypt / 商业证书)

我可以直接告诉你是哪一行导致 SSL 失败。

0 踩