SSLyze密码套件深度审计指南:找出服务器上的弱加密与DHE参数长度

📅 2026/8/23 15:22:02
SSLyze密码套件深度审计指南:找出服务器上的弱加密与DHE参数长度
SSLyze密码套件深度审计指南找出服务器上的弱加密与DHE参数长度【免费下载链接】sslyzeCurrent development of SSLyze now takes place on a separate repository项目地址: https://gitcode.com/gh_mirrors/ssl/sslyzeSSLyze是一个功能强大的 SSL/TLS 安全扫描器用 Python 编写。它会连接目标服务器逐个枚举其支持的密码套件Cipher Suites找出其中的弱加密算法和过短的DHE 参数长度一条命令即可完成 TLS 加密强度审计。为什么你的服务器需要做密码套件审计HTTPS 并不等于强加密。TLS 握手最终采用哪个密码套件取决于服务器是否接受它服务器若仍支持 3DES、RC4 等老算法连接可能被降级若支持匿名密钥交换ADH攻击者可直接中间人窃听若 DHE 密钥交换分组只有 512/1024 bit预计算攻击如 Logjam就能破解前向保密。一次完整的密码套件审计就是把这些后门一次性揪出来。快速上手3 步跑通第一个审计1️⃣获取 SSLyze。本项目为 v0.10基于 Python 2.7并静态链接了 C 扩展 nassl。最简单的方式是下载对应平台的预编译包也可以直接克隆源码git clone https://gitcode.com/gh_mirrors/ssl/sslyze克隆源码后需从预编译包中复制一份编译好的 nassl 包装器到项目目录见 README.md 的 Build / nassl 章节。2️⃣查看全部可用参数python sslyze.py -h3️⃣扫描目标列出 TLS 1.2 下服务器支持的密码套件python sslyze.py --tlsv1_2 www.example.com 提示--sslv2、--sslv3、--tlsv1、--tlsv1_1用法相同可逐个版本扫描对比更多示例见 test/https_test.txt。看懂审计报告输出中的 4 个关键区域密码套件扫描由 plugins/PluginOpenSSLCipherSuites.py 实现它会用 OpenSSL 的完整套件清单ALL:COMPLEMENTOFALL逐一握手输出分为 4 块区域含义审计要点Preferred服务器首选的密码套件是否已是强算法Accepted握手成功的全部套件⭐ 重点排查弱加密Undefined出现意外错误的套件数量多需排查Rejected被服务器拒绝的套件越多说明服务器越严格每一行都展示三项信息套件名称、密钥交换参数、对称密钥长度。其中名称含ADH/AECDH匿名交换的套件会被标注为ANONYMOUS——这类绝不应出现在 Accepted 中DHE/ECDHE 套件会额外显示分组长度如DHE-2048 bits。格式化逻辑见 _generate_text_output。弱加密识别清单看到这 4 类名称要标记 在Accepted列表中出现以下特征时说明存在风险应尽快关闭风险名称特征为什么危险 高ADH、AECDH、aNULL、eNULL匿名密钥交换 / 无认证 / 无加密 高EXPORT早期出口级弱算法 中3DES三重 DES有效强度仅 112 bit存在 SWEET32 碰撞攻击 中RC4密钥流存在已知偏差已被 RFC 废弃理想状态Accepted 列表尽量短且只保留 ECDHE AES-GCM 这类强套件如ECDHE-RSA-AES256-GCM-SHA384Rejected 列表覆盖越全说明服务器暴露面越小。DHE 参数长度Diffie-Hellman 分组位长怎么看从 v0.10 起SSLyze 会在密码套件输出中直接显示握手中 Diffie-Hellman 参数的位长见 CHANGELOG.md。例如DHE-RSA-AES256-GCM-SHA384 DHE-2048 bits 256 bits中间一列是DHE 分组长度从服务器 ServerKeyExchange 中提取的Type-GroupSize末尾一列是对称加密密钥长度。判断参考≥ 2048 bits安全 ✅1024 bits偏弱 ⚠️易受预计算攻击建议收紧 1024 bits危险 源码逻辑在 _test_ciphersuite套件名含DH时调用get_dh_param()含ECDH时调用get_ecdh_param()获取分组信息。进阶玩法批量扫描 XML 报告管理多个域名时推荐组合以下参数定义见 utils/CommandLineParser.pypython sslyze.py --regular --hide_rejected_ciphers --xml_out report.xml \ --targets_in my_servers.txt--targets_in从文件读取目标清单每行一个host:port--regular一键组合 5 个密码套件版本及其他常见检查REGULAR_CMD 定义--xml_out结果导出为 XML其中每个套件都会带keyExchange元素记录 DHE/ECDHE 参数可作为长期审计基线做 diff--hide_rejected_ciphers隐藏冗长的拒绝列表让控制台输出更聚焦--http_get握手成功后补发 HTTP GET验证服务端确实返回 HTTP。⚠️ 注意事项密码套件扫描会并发最多 15 条连接属于aggressive命令。主程序将其放入优先级队列避免对同一服务器并行执行见 sslyze.py网络较慢时可调整--timeout与--nb_retries减少误报。源码速览核心模块路径模块路径职责主入口sslyze.py多进程调度、结果汇总与 XML 输出密码套件扫描plugins/PluginOpenSSLCipherSuites.py枚举套件、密钥长度与 DH 参数命令行解析utils/CommandLineParser.py全部--参数与--regular快捷键连接封装utils/SSLyzeSSLConnection.py握手、StartTLS、代理隧道连接版本说明CHANGELOG.mdv0.10 新增 DH 参数位长显示总结审计四问一次到位跑完--tlsv1_2等命令后按顺序回答四个问题Preferred是否已是强套件Accepted里有没有 ADH/3DES/RC4 等弱加密DHE 分组是否 ≥ 2048 bitsRejected是否覆盖了全部弱套件再配合--xml_out定期导出对比任何加密降级回退都能被一眼发现。【免费下载链接】sslyzeCurrent development of SSLyze now takes place on a separate repository项目地址: https://gitcode.com/gh_mirrors/ssl/sslyze创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考