nmap的ssl-enum-ciphers脚本可直接检测nginx支持的tls协议和密码套件,命令为nmap --script ssl-enum-ciphers -p 443 ,输出包含tls版本及各套件安全等级,重点关注tlsv1.0/1.1和标c或weak的弱套件。

直接用 Nmap 配合内置脚本就能快速摸清 Nginx 暴露的 TLS 现状,不用装额外工具,也不依赖线上服务是否对外公开——只要 443 端口可连,就能拿到真实握手结果。
用 Nmap 扫描支持的协议与密码套件
Nmap 的 ssl-enum-ciphers 脚本会模拟不同 TLS 版本和上百种密码组合去连接你的 Nginx,然后列出哪些能成功握手。这是最贴近攻击者视角的检测方式。
- 检测域名:运行
docker run --rm -v $(pwd)/results:/results securecodebox/nmap nmap --script ssl-enum-ciphers -p 443 example.com -oX /results/output.xml - 检测 IP(绕过 DNS 或测试内网):把
example.com换成服务器真实 IP,如192.168.1.100 - 重点关注输出里的
TLSv1.0、TLSv1.1、SSLv3区块,以及标有C或WEAK的套件(比如含3DES、RC4、DES、NULL的)
用 OpenSSL 命令验证特定协议或算法
当扫描报告指出“支持 TLS 1.0”或“使用 RSA 密钥交换”,可用 OpenSSL 手动复现握手,确认是否真被接受。
- 强制只用 TLS 1.0 连接:
openssl s_client -connect example.com:443 -tls1,若返回证书信息,说明未禁用 - 测试弱算法(如 3DES):
openssl s_client -connect example.com:443 -cipher '3DES' - 检查 DH 参数强度:
openssl dhparam -check -in /path/to/dhparam.pem,确认位数 ≥2048
结合 Qualys SSL Labs 做综合评级
Nmap 给的是技术细节,Qualys(https://www.ssllabs.com/ssltest/)提供面向合规的直观评分(A+/B/C/F),并明确标出风险点,比如:
- “Weak key exchange” —— DH 参数太短或使用静态 RSA
- “Deprecated protocols” —— TLS 1.0/1.1 仍启用
- “Insecure cipher suites” —— 列出具体不安全套件名称
- 它还会检查 HSTS、证书链、OCSP 装订等配套配置,补全 Nmap 不覆盖的维度
扫描后别跳过日志交叉验证
有些漏洞(如恶意扫描器试探、SNI 异常)不会出现在握手能力列表里,但会留在 Nginx 访问日志中。建议在 http 块里加一行:
log_format tls_detail '$remote_addr - [$time_local] "$ssl_protocol/$ssl_cipher" "$ssl_server_name"';
然后用 grep -E "(TLSv1\.0|TLSv1\.1|NULL|RC4|3DES)" access.log 快速筛出可疑连接,尤其关注高频、空 SNI、IP 直连等行为。











