testssl.sh 是干什么的
testssl.sh 是一个开源检测脚本,对目标做协议版本、套件强度、证书链与有效期,以及常见缺陷条目的扫描,并按 OK、INFO、WARN、CRITICAL 分级输出。它适合在上线前建立基线、在配置变更后做复查。使用时有两条纪律:只扫描自有或已获授权的资产;异常项要在不同链路上复测后再下结论。
基本信息
| 运行方式 | 本地需要 bash 与 openssl,克隆仓库后直接执行 |
|---|---|
| 常用参数 | --fast 快速模式、--severity 过滤级别、--jsonfile 或 --csvfile 导出 |
| 检测内容 | 协议版本、套件强度、证书链与有效期、HSTS、OCSP 装订等 |
| 配合使用 | 与浏览器和命令行直连结果互相印证 |
| 授权前提 | 只扫描自有或已获授权的资产 |
| 频次控制 | 高频扫描可能触发 WAF 或 IPS 拦截 |
典型使用场景
- 上线前基线:记录初始状态,作为后续对比的依据
- 变更后复查:确认套件或协议调整确实生效
- 批量资产巡检:按域名清单逐个扫描并汇总报告
- 整改验收:把严重项清零后再次扫描确认
- 配置对标:了解同类站点的配置水平(注意授权边界)
运行与导出报告
运行与导出报告
git clone --depth 1 https://github.com/drwetter/testssl.sh.git
cd testssl.sh && ./testssl.sh --fast example.com
# 导出结构化报告,便于归档与前后比对
./testssl.sh --quiet --jsonfile report.json example.com
# 只看严重级别较高的条目,减少噪音
./testssl.sh --severity HIGH example.com分级读法
| 级别 | 含义 | 处置 |
|---|---|---|
| OK | 符合预期 | 归档留底 |
| INFO | 信息性提示 | 按业务判断是否需要动作 |
| WARN | 潜在风险或最佳实践缺失 | 结合威胁模型排优先级 |
| CRITICAL | 明确的安全缺陷 | 优先整改并复测 |
对外部目标扫描前需获得授权,仅对自有或已授权资产执行;高频扫描可能触发 WAF 或 IPS 拦截导致结果失真。
扫描结论要交叉验证:同一目标在浏览器、命令行与检测脚本下的结果可能不同,出现分歧时用最简单的命令行复现来判断谁更接近事实。
把报告归档或纳入版本管理:只有留下基线,才能判断某次变更是改好了还是改坏了。