rmdir.cn

openssl s_client

建立 TLS 连接并打印握手详情

语法

openssl s_client -connect 主机:端口 -servername 主机名

说明

适用于排查 HTTPS 握手失败、证书链问题和协议版本协商。s_client 会输出服务端下发的证书链、协商出的协议与加密套件、会话参数以及验证结果。排查时通常需要重定向标准输入避免交互挂起,并用 -servername 显式发送 SNI,否则拿到的是默认虚拟主机的证书。

参数

  • -connect必填

    目标地址与端口,如 host:443

  • -servername

    发送 SNI,虚拟主机场景必填

  • -showcerts

    打印完整证书链的 PEM 内容

  • -tls1_2

    限定使用 TLS 1.2 握手

示例

检查证书链与协议版本

非交互方式快速获取握手信息。

openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | head -n 30

注意事项:注意区分 Verification 行的验证结果,默认信任库缺失根证书时可能显示 self-signed certificate in certificate chain。

验证是否支持 TLS 1.2

确认老客户端能否连接。

openssl s_client -connect example.com:443 -servername example.com -tls1_2 </dev/null 2>&1 | grep -E 'Protocol|Cipher'

注意事项:握手失败时应结合服务端配置与中间设备策略排查,不要直接修改全局协议开关。

参考资料