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