testssl.sh
Command line tool to check TLS/SSL ciphers, protocols and cryptographic flaws on servers. Checks support for TLS/SSL ciphers, protocols, recent cryptographic flaws and more.
Description
testssl.sh is a free command line tool which checks a server’s service on any port for the support of TLS/SSL ciphers, protocols as well as recent cryptographic flaws and more. Key features include clear output to easily identify good or bad results, ease of installation across multiple platforms without additional dependencies, flexibility to test any SSL/TLS enabled or STARTTLS service, and a reliable toolbox of command line options.
It supports testing web servers on port 443 as well as other services via STARTTLS protocols like FTP, SMTP, IMAP, XMPP and more. The tool provides thorough testing of protocols, ciphers, forward secrecy, vulnerabilities like Heartbleed, CCS injection, and others, with options for customized output formats including JSON, CSV, and logging. Privacy-focused as results are only visible to the user, and fully open source for inspection and modification.
Ideal for security assessments of SSL/TLS configurations across diverse services, ensuring compliance with modern cryptographic standards and identifying implementation flaws.
How It Works
testssl.sh connects to target servers via OpenSSL to test supported TLS/SSL protocols, cipher suites, and vulnerabilities. It performs individual cipher checks, protocol negotiations including ALPN/HTTP2/SPDY, forward secrecy evaluation, and specific vulnerability tests like Heartbleed, CCS injection, Ticketbleed, ROBOT, and renegotiation issues. Supports STARTTLS upgrades for non-443 services and MX record testing. Uses local OpenSSL capabilities with warnings for missing client-side features, configurable via environment variables and proxy support.
Installation
sudo apt install testssl.shFlags
Examples
testssl [options] <URI>testssl --helptestssl -btestssl -Vtestssl -t smtp <host>testssl --mx example.comtestssl --file targets.txttestssl -e -p example.com