nginx-ssl-error

Nginx SSL 握手错误的定位与修复

现象

error.log 出现 SSL_do_handshake() failed、no shared cipher、wrong version number、certificate verify failed;客户端无法建立 HTTPS 连接。

快速定位

tail -f /var/log/nginx/error.log
nginx -T | grep -nE 'ssl_certificate|ssl_protocols|ssl_ciphers|ssl_verify_client'
openssl s_client -connect <host>:443 -servername <host>
openssl x509 -in cert.pem -noout -dates -subject -issuer

常见根因

  1. 证书和私钥不匹配,或证书链不完整。
  2. 证书过期、域名不匹配或 CA 不受信任。
  3. 客户端和服务端的 TLS 版本/加密套件没有交集。
  4. 端口协议错误(HTTP 打到 HTTPS 端口)。
  5. SNI 未配置,返回了默认站点证书。
  6. mTLS 客户端证书缺失或校验失败。

修复

相关命令