温馨提示×

nginxssl在debian如何调试

小樊
40
2026-10-08 14:20:45
栏目: 云计算

在 Debian 上调试 Nginx + SSL(HTTPS) 问题,可以按下面一套比较系统的流程来排查。


一、先看 Nginx 配置是否正确

1. 检查配置文件语法

sudo nginx -t

输出示例(正常):

nginx: configuration file /etc/nginx/nginx.conf test is successful

如果有错误,会直接指出行号和原因。


2. 查看 SSL 相关配置

常见配置(示例):

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 路径写错
  • 证书和 key 不匹配
  • 证书链不完整(缺 intermediate CA)

二、确认证书文件本身是否正常

1. 检查证书和私钥是否匹配

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

两个 md5 必须一致。


2. 查看证书信息

openssl x509 -in cert.crt -noout -text

确认:

  • 域名(CN / SAN)
  • 有效期
  • 签发机构

3. 测试证书链

openssl verify -CAfile ca-bundle.crt cert.crt

三、从本机测试 SSL 连接

1. 用 openssl 测试

openssl s_client -connect example.com:443

重点看:

  • 是否返回证书
  • 是否有 Verify return code: 0 (ok)

2. 测试 SNI(多域名)

openssl s_client -connect example.com:443 -servername example.com

四、检查 Nginx 日志

1. 错误日志(最重要)

sudo tail -f /var/log/nginx/error.log

常见问题:

  • SSL_CTX_use_PrivateKey_file failed
  • cannot load certificate
  • SSL handshake failed

2. 访问日志

sudo tail -f /var/log/nginx/access.log

五、防火墙 & 端口检查

1. 确认 443 在监听

sudo ss -tulnp | grep :443

或

sudo netstat -tulnp | grep :443

2. 防火墙

sudo ufw status

确保允许:

sudo ufw allow 443/tcp

如果是云服务器,还要检查 安全组。


六、检查系统时间和时区

证书验证依赖系统时间:

date

时间不对会导致 SSL 失败。


七、使用外部工具验证

1. 在线检测

  • https://www.ssllabs.com/ssltest/
  • https://checktls.com/

2. curl 测试

curl -v https://example.com

八、常见 SSL 问题速查

问题 可能原因
浏览器提示不安全 证书过期 / 域名不匹配
502 / 握手失败 证书 key 不匹配
部分浏览器正常 证书链不完整
本地 OK,外网不行 防火墙 / 安全组
nginx 启动失败 配置语法错误

如果你愿意,可以把下面信息贴出来,我可以帮你精确定位:

  • nginx -t 输出
  • /var/log/nginx/error.log 相关报错
  • 你的 server {} SSL 配置片段

我可以直接帮你改。

0 踩