testssl.sh 检查什么
testssl.sh 对 TLS 配置做系统检查:支持的协议版本、密码套件强度、证书链完整性、证书有效期与名称匹配、已知弱点等,输出按等级标注的结果。它适合纳入证书与加密基线的例行核查,也便于在配置调整前后跑同一命令做对比,确认改动确实生效。
基本信息
| 工具 | testssl.sh,命令行执行,依赖 openssl 等组件 |
|---|---|
| 检查内容 | 协议版本、密码套件、证书链与有效期、已知弱点 |
| 常用参数 | -p 只看协议、-s 只看套件、--severity 限定等级、--json 输出便于对比 |
| 基线建议 | 对外服务启用 TLS 1.2 及以上,禁用已知弱套件 |
| 复测方式 | 配置调整后重跑同一命令,比对差异项 |
| 注意事项 | 负载均衡与 CDN 场景要确认检查的是真实对外端点 |
检查项与基线
| 检查项 | 关注点 | 基线建议 |
|---|---|---|
| 协议版本 | SSLv3、TLS 1.0 与 1.1 是否仍启用 | 关闭,至少保留 TLS 1.2 |
| 密码套件 | RC4、3DES 等弱套件 | 禁用 |
| 证书链 | 中间证书是否缺失 | 补全,避免部分客户端连接失败 |
| 证书有效期 | 到期时间与续期安排 | 提前告警,留出更换窗口 |
| 名称匹配 | 证书域名与实际访问域名 | 覆盖全部对外域名 |
| 已知弱点 | 历史协议级问题 | 按版本与配置确认已修复 |
常用命令
常用命令
# 完整检查,只展示 HIGH 及以上等级
testssl.sh --severity HIGH https://example.com
# 只看协议与密码套件部分
testssl.sh -p -s https://example.com
# 输出 JSON,便于与历史结果对比
testssl.sh --json out.json https://example.com
# 非标准端口要显式指定
testssl.sh https://example.com:8443典型使用场景
- 网站传输层配置的例行核查
- 证书更换与续期后的复测
- 合规检查中的加密基线举证材料
- 负载均衡与 CDN 配置调整后的验证
- 老系统排查是否仍支持已淘汰的弱协议
- 变更前后对比,确认调整生效
负载均衡与 CDN 场景下要确认检查的是真实对外端点,回源链路的配置可能与对外表现不一致,两端都要核查。
只看总评级不看细节,容易漏掉证书链缺失中间证书这类问题——它在部分客户端上的表现是连接失败,而评级未必明显降级。