首页/安全/渗透测试与安全评估速查/sslscan 与 openssl s_client
工具使用要点60 条

sslscan 与 openssl s_client

sslscan 枚举协议与套件;openssl s_client 查看完整证书链与握手细节,两者互补完成 TLS 核查与取证。

两个工具怎么配合

sslscan 擅长快速枚举:支持的协议版本、加密套件、证书概要,适合批量摸底。openssl 的 s_client 擅长细节:完整证书链、握手过程、扩展与校验结果,适合单点取证。评估中通常先用 sslscan 找出薄弱目标,再用 s_client 抓取可直接贴进报告的证书与握手信息。

基本信息

sslscan协议与套件快速枚举,输出为可读文本
s_client证书链、握手细节与校验结果
必带参数-servername 指定 SNI,否则取到默认站点证书
取证内容有效期、主体、签发者、链路校验结果

典型使用场景

  • HTTPS 服务协议与套件现状摸底
  • 弱协议与弱套件的存在性核查
  • 证书链完整性取证与到期时间核对
  • 多节点与多域名场景下的逐点抽查
  • 整改前后对比,验证配置变更是否生效

检查示例

检查示例
sslscan example.com:443                                     # 协议与套件枚举,快速定位薄弱项
echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null | openssl x509 -noout -dates -subject -issuer   # 证书有效期与主体
echo | openssl s_client -connect example.com:443 -servername example.com 2>&1 | grep -i 'verify return code'   # 链校验结果
openssl s_client -connect example.com:443 -servername example.com -tls1_2 </dev/null 2>&1 | head -5   # 指定协议版本探测

输出读法与判据

输出项含义异常表现
支持的协议SSLv3/TLS1.0/1.1 等仍支持已淘汰版本
加密套件列表协商可用的套件集合含弱套件或空套件
证书有效期生效与到期时间临近到期或已过期
主体与 SAN覆盖域名范围缺少业务域名
链校验结果证书链是否可验证非成功即链不完整或自签
本地 openssl 版本会影响结论:过旧的客户端可能无法协商新协议,导致把服务端配置误判为不支持;结论以服务端配置与多工具交叉验证为准。
多节点部署的站点要逐点抽查:负载均衡后不同服务器可能加载不同证书或配置,只测一次得到的结果不能代表全部节点。
取证时把命令与输出一并保存,并记录执行时间与来源地址:同一域名在不同时间可能加载不同证书(如证书轮换期间),缺少时间戳的截图在复测与争议处理时说服力有限。

易错点

  • 忽略 -servername 参数,取到默认站点证书,结论与目标站点不符
  • 本地工具版本过旧导致协议支持被误判,报告出现不实结论
  • 只测一个节点就推断整体配置,多节点环境结论失真
  • 只看证书有效期不检查链完整性,部分客户端失败问题被漏掉
  • 把套件枚举结果直接等同于可利用问题,未说明实际影响与前提
  • 对同一站点只做一次检查就推广到全部入口,忽略非 443 端口与备用域名上的 TLS 服务

数据来源与参考

  • OpenSSL 官方文档(s_client)
  • sslscan 官方仓库
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌