在 Debian 上调试 Nginx + SSL(HTTPS) 问题,可以按下面一套比较系统的流程来排查。
sudo nginx -t
输出示例(正常):
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果有错误,会直接指出行号和原因。
常见配置(示例):
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
}
常见错误:
ssl_certificate 和 ssl_certificate_key 路径写错openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in key.key | openssl md5
两个 md5 必须一致。
openssl x509 -in cert.crt -noout -text
确认:
openssl verify -CAfile ca-bundle.crt cert.crt
openssl s_client -connect example.com:443
重点看:
Verify return code: 0 (ok)openssl s_client -connect example.com:443 -servername example.com
sudo tail -f /var/log/nginx/error.log
常见问题:
SSL_CTX_use_PrivateKey_file failedcannot load certificateSSL handshake failedsudo tail -f /var/log/nginx/access.log
sudo ss -tulnp | grep :443
或
sudo netstat -tulnp | grep :443
sudo ufw status
确保允许:
sudo ufw allow 443/tcp
如果是云服务器,还要检查 安全组。
证书验证依赖系统时间:
date
时间不对会导致 SSL 失败。
curl -v https://example.com
| 问题 | 可能原因 |
|---|---|
| 浏览器提示不安全 | 证书过期 / 域名不匹配 |
| 502 / 握手失败 | 证书 key 不匹配 |
| 部分浏览器正常 | 证书链不完整 |
| 本地 OK,外网不行 | 防火墙 / 安全组 |
| nginx 启动失败 | 配置语法错误 |
如果你愿意,可以把下面信息贴出来,我可以帮你精确定位:
nginx -t 输出/var/log/nginx/error.log 相关报错server {} SSL 配置片段我可以直接帮你改。