可用openssl s_client命令验证nginx https配置:先确认监听443端口,再执行openssl s_client -connect host:443测试握手;支持指定tls版本、显示证书、验证信任链(-cafile)及调试输出(-debug/-showcerts)。

可以直接用 OpenSSL 的 s_client 命令连接 Nginx 的 HTTPS 端口,模拟 SSL/TLS 握手过程,快速验证证书、协议支持、密钥交换等是否正常。
确认 Nginx 已启用 HTTPS 并监听正确端口
确保 Nginx 配置中已启用 SSL(如 listen 443 ssl;),且证书路径、私钥路径配置无误。重启 Nginx 后,用 netstat -tlnp | grep :443 或 ss -tlnp | grep :443 确认服务正在监听。
基础握手测试(默认 TLSv1.2)
运行以下命令,连接本地或远程 Nginx:
openssl s_client -connect example.com:443
若域名未解析,可用 IP + -servername 指定 SNI:
openssl s_client -connect 192.168.1.100:443 -servername example.com
成功时会显示证书链、协商的 TLS 版本、加密套件、Session-ID 等信息;失败则提示超时、证书错误或 handshake failure。
指定协议版本和调试细节
排查兼容性问题时,可强制指定 TLS 版本或开启详细输出:
-
openssl s_client -connect example.com:443 -tls1_2(仅 TLS 1.2) -
openssl s_client -connect example.com:443 -tls1_3(仅 TLS 1.3,OpenSSL 1.1.1+) -
openssl s_client -connect example.com:443 -debug(打印完整 TLS 记录层数据) -
openssl s_client -connect example.com:443 -showcerts(显示全部证书,含中间 CA)
验证证书有效性与信任链
添加 -CAfile 或 -CApath 可验证证书是否被信任:
openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/ca-bundle.crt
若返回 Verify return code: 0 (ok),说明证书有效且信任链完整;非零值(如 18 表示 self-signed,21 表示 unable to verify)需检查证书部署或 CA 文件路径。











