首页/系统/Linux 运维命令速查/openssl s_client 检测 TLS
网络命令82 条

openssl s_client 检测 TLS

直连 TLS 握手看证书链、协议版本与到期时间:配合 -servername(SNI)与 x509 解析,证书问题一眼定位。

Linux 运维命令速查系统更新于 2026-10-13

s_client 是什么

openssl s_client 手工发起一次 TLS 握手并把协商结果打印出来:协议版本、加密套件、对端证书链与验证结论。它是回答「证书装对没有、链全不全、什么时候到期、还在不在支持弱协议」最直接的工具。多域名站点必须带 -servername 指定 SNI,否则服务器可能返回默认证书,核对的对象根本不是目标域名。把输出交给 openssl x509 解析,还能把证书主体、签发者与到期时间变成可脚本判断的内容。

基本信息

适用平台Linux/macOS(OpenSSL 命令行工具);Windows 可用 Git 自带版本或 WSL
命令语法openssl s_client -connect 主机:端口 [-servername 域名] [-showcerts|-brief]
常用选项-connect 目标 -servername 指定 SNI -showcerts 输出完整链 -brief 输出摘要 -verify 显示验证码 -tls1_2 指定协议版本
配套命令openssl x509 解析证书、-checkend 判断到期、-noout 抑制编码输出
权限说明普通用户即可,只需能访问目标端口

典型使用场景

  • 上线核对:确认新部署的证书是目标域名、签发者与预期一致
  • 链完整性检查:漏装中间证书时浏览器报错,命令行能直接看到验证失败
  • 协议合规:确认是否还在协商 TLS 1.0/1.1 或弱加密套件
  • 到期监控:用 -checkend 判断证书是否在指定时间内到期,便于脚本告警
  • 故障定界:HTTP 能通但 HTTPS 失败时,区分是证书问题还是后端服务问题

常用示例

常用示例
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -checkend 2592000   # 30 天内将到期则返回非 0
echo | openssl s_client -connect 10.0.0.5:443 -servername app.internal 2>&1 | grep -E 'Verify|Protocol|Cipher'
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null | head -n 40
echo | openssl s_client -connect example.com:443 -servername example.com -brief 2>&1 | head -n 12

握手输出关键行

输出行含义怎么看
Verify return code证书链验证结论0 表示验证通过,非 0 通常是缺中间证书或根不受信
Protocol协商到的 TLS 版本与合规基线比对,是否仍允许旧版本
Cipher协商使用的加密套件检查是否落入弱套件清单
subject 与 issuer证书主体与签发者确认域名与 CA 是否符合预期
s_client 在握手完成后会保持连接等待标准输入。命令里加 echo | 或 </dev/null 让它立刻结束,否则终端会一直停在连接状态。
不带 -servername 时服务器返回的是默认证书。多域名或默认站点与目标站点分离的环境,漏了这个参数会验证到完全不同的证书,得出错误结论。

易错点

  • 忘记 -servername,核对到的其实是默认证书
  • 命令没有关闭标准输入,s_client 挂住不返回,脚本里表现为超时
  • 只检查证书内容不看到期时间,证书过期要等监控或用户反馈才发现
  • 仅从本机测试,忽略了外部线路中间设备返回不同证书的可能,关键服务应从外部网络复测

数据来源与参考

  • man 1 openssl-s_client(OpenSSL 官方手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌