11 款适用于网站管理员的免费 SSL/TLS 故障排除工具

身为Web工程师、网站管理员或系统管理员,您在日常工作中时常会遇到需要排查SSL/TLS相关问题的场景。

虽然市面上有很多在线工具可用于SSL证书检测和SSL/TLS漏洞扫描,但是当您需要测试内网的URL、VIP或IP地址时,这些工具往往就显得力不从心。

为了顺利解决内网资源的问题,您需要一款可以部署在网络内部,并执行必要测试的独立软件或工具。

您可能会遇到以下几种情况:

  • 在Web服务器上部署SSL证书的过程中出现问题
  • 想要确认当前正在使用最新/特定的加密算法和协议
  • 在完成部署后,希望验证配置是否正确
  • 在渗透测试报告中发现了安全风险

以下工具将可以帮助您解决上述问题。

深紫 (DeepViolet)

深紫是一款基于Java的SSL/TLS扫描工具,它以二进制形式提供,您也可以选择使用源代码自行编译。

如果您正在寻找一个可以替代SSL Labs,并且适用于内部网络的工具,那么DeepViolet将会是不错的选择。它可以扫描以下内容:

  • 暴露的弱密码
  • 弱签名算法
  • 证书吊销状态
  • 证书过期状态
  • 可视化信任链,以及自签名根证书

SSL诊断 (SSL Diagnos)

这是一款可以快速评估您网站SSL强度的工具。SSL诊断可以提取SSL协议、密码套件、Heartbleed漏洞和BEAST漏洞等信息。

它不仅仅适用于HTTPS,还可以用于测试SMTP、SIP、POP3和FTPS的SSL强度。

SSLyze

SSLyze是一款Python库和命令行工具,它可以连接到SSL终端并进行扫描,以识别SSL/TLS的错误配置。

SSLyze扫描速度很快,因为它会将测试分布在多个进程中。如果您是开发人员,或者想要将其集成到现有应用程序中,可以选择以XML或JSON格式导出扫描结果。

SSLyze在Kali Linux中也有提供。如果您是Kali新手,可以学习如何在VMWare Fusion上安装Kali Linux。

OpenSSL

不要低估OpenSSL的作用,它是一款功能强大的独立工具,可以在Windows或Linux上使用,执行各种SSL相关任务,例如验证、CSR生成和证书转换等。

SSL Labs 扫描

您是否喜欢Qualys SSL Labs?您并非孤身一人,我也很喜欢它。

如果您正在寻找一个可以用于自动化或批量测试的SSL Labs命令行工具,那么SSL Labs扫描会很有帮助。

SSL 扫描

SSL扫描兼容Windows、Linux和macOS。它可以帮助您快速识别以下指标:

  • 突出显示SSLv2/SSLv3/CBC/3DES/RC4密码
  • 报告弱(<40位)密码和空/匿名密码
  • 验证TLS压缩和Heartbleed漏洞
  • 以及更多…

如果您正在处理与密码相关的问题,SSL扫描将是一款可以帮助您快速追踪问题根源的工具。

techblik.com TLS 扫描程序 API

对于网站管理员而言,techblik.com TLS Scanner API是另一个不错的选择。

它是一种可以快速检查TLS协议、CN、SAN和其他证书详细信息的方法。您可以免费订阅,每月最多可进行3000次请求。

但是,如果您选择基本高级套餐,每月只需5美元,就可以获得更高的请求速率,并支持10000次API调用。

TestSSL

顾名思义,TestSSL是一款与Linux或macOS兼容的命令行工具。它可以测试所有基本指标,并提供好坏状态的反馈。

例如:

Testing protocols via sockets except SPDY+HTTP2

SSLv2 not offered (OK)
SSLv3 not offered (OK)
TLS 1 offered
TLS 1.1 offered
TLS 1.2 offered (OK)
SPDY/NPN h2, spdy/3.1, http/1.1 (advertised)
HTTP2/ALPN h2, spdy/3.1, http/1.1 (offered)

Testing ~standard cipher categories

NULL ciphers (no encryption) not offered (OK)
Anonymous NULL Ciphers (no authentication) not offered (OK)
Export ciphers (w/o ADH+NULL) not offered (OK)
LOW: 64 Bit + DES encryption (w/o export) not offered (OK)
Weak 128 Bit ciphers (SEED, IDEA, RC[2,4]) not offered (OK)
Triple DES Ciphers (Medium) not offered (OK)
High encryption (AES+Camellia, no AEAD) offered (OK)
Strong encryption (AEAD ciphers) offered (OK)

Testing server preferences

Has server cipher order? yes (OK)
Negotiated protocol TLSv1.2
Negotiated cipher ECDHE-ECDSA-CHACHA20-POLY1305-OLD, 256 bit ECDH (P-256)
Cipher order
TLSv1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA DES-CBC3-SHA 
TLSv1.1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA 
TLSv1.2: ECDHE-ECDSA-CHACHA20-POLY1305-OLD ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-CHACHA20-POLY1305-OLD
ECDHE-RSA-CHACHA20-POLY1305 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES128-SHA256 AES128-GCM-SHA256 AES128-SHA AES128-SHA256
ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES256-SHA384 AES256-GCM-SHA384
AES256-SHA AES256-SHA256

Testing vulnerabilities

Heartbleed (CVE-2014-0160) not vulnerable (OK), no heartbeat extension
CCS (CVE-2014-0224) not vulnerable (OK)
Ticketbleed (CVE-2016-9244), experiment. not vulnerable (OK)
Secure Renegotiation (CVE-2009-3555) not vulnerable (OK)
Secure Client-Initiated Renegotiation not vulnerable (OK)
CRIME, TLS (CVE-2012-4929) not vulnerable (OK)
BREACH (CVE-2013-3587) potentially NOT ok, uses gzip HTTP compression. - only supplied "/" tested
Can be ignored for static pages or if no secrets in the page
POODLE, SSL (CVE-2014-3566) not vulnerable (OK)
TLS_FALLBACK_SCSV (RFC 7507) Downgrade attack prevention supported (OK)
SWEET32 (CVE-2016-2183, CVE-2016-6329) not vulnerable (OK)
FREAK (CVE-2015-0204) not vulnerable (OK)
DROWN (CVE-2016-0800, CVE-2016-0703) not vulnerable on this host and port (OK)
make sure you don't use this certificate elsewhere with SSLv2 enabled services
https://censys.io/ipv4?q=EDF8A1A3D0FFCBE0D6EA4C44DB5F4BE1A7C2314D1458ADC925A30AA6235B9820 could help you to find out
LOGJAM (CVE-2015-4000), experimental not vulnerable (OK): no DH EXPORT ciphers, no DH key detected
BEAST (CVE-2011-3389) TLS1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA
AES256-SHA DES-CBC3-SHA 
VULNERABLE -- but also supports higher protocols (possible mitigation): TLSv1.1 TLSv1.2
LUCKY13 (CVE-2013-0169) VULNERABLE, uses cipher block chaining (CBC) ciphers
RC4 (CVE-2013-2566, CVE-2015-2808) no RC4 ciphers detected (OK)

正如您所看到的,它涵盖了大量的漏洞、密码偏好和协议等信息。TestSSL.sh也可以在Docker镜像中使用。

如果您需要使用testssl.sh进行远程扫描,您可以尝试techblik.com TLS Scanner。

TLS 扫描

您可以从源代码构建TLS扫描,或者下载适用于Linux/macOS的二进制文件。它会从服务器中提取证书信息,并以JSON格式打印以下指标:

  • 主机名验证检查
  • TLS压缩检查
  • 密码和TLS版本枚举检查
  • 会话重用检查

它支持TLS、SMTP、STARTTLS和MySQL协议。您还可以将生成的输出集成到Splunk、ELK等日志分析器中。

密码扫描

这是一个可以快速分析HTTPS网站支持的所有密码的工具。密码扫描可以选择以JSON格式显示输出。它是一个包装器,内部使用了OpenSSL命令。

SSL 审计

SSL审计是一个开源工具,可以验证证书,并且支持基于SSL Labs的协议、密码和等级。

我希望以上开源工具可以帮助您将持续扫描集成到现有的日志分析器中,并简化故障排除过程。