Testing TLS/SSL encryption anywhere on any port. https://testssl.sh/
Go to file
2018-02-27 13:08:42 +01:00
bin Update Readme.md 2016-09-27 00:08:01 +02:00
doc added ALL_CLIENTS for client siumulation 2017-08-30 23:40:47 +02:00
etc added MS CA store, see #825 2017-09-19 15:15:54 +02:00
t chmodded 2017-06-01 11:14:52 +02:00
utils any openssl will do 2017-09-18 14:02:12 +02:00
.gitignore update 2016-11-07 21:05:21 +01:00
.travis.yml Be more verbose in your error testing 2016-06-29 00:15:32 +02:00
CHANGELOG.stable-releases.txt Rename old.CHANGELOG.txt to CHANGELOG.stable-releases.txt 2015-09-03 15:15:36 +02:00
CREDITS.md Update CREDITS.md 2017-07-13 14:02:33 +02:00
Dockerfile Backport of Alpine Linux Dockerfile from 2.9dev 2018-02-09 14:11:27 +01:00
Dockerfile.md Backport of Alpine Linux Dockerfile from 2.9dev 2018-02-09 14:11:27 +01:00
LICENSE Initial commit 2014-07-01 13:55:26 +02:00
openssl-rfc.mappping.html typo 2016-02-06 16:18:46 +01:00
Readme.md update links, reorder features 2017-09-27 09:02:29 +02:00
testssl.sh address #876 (empty addcmd2 variable) 2018-02-27 13:08:42 +01:00

Intro

Build Status Gitter

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 some cryptographic flaws.

Key features

  • Clear output: you can tell easily whether anything is good or bad
  • Ease of installation: It works for Linux, Darwin, FreeBSD, NetBSD and MSYS2/Cygwin out of the box: no need to install or configure something, no gems, CPAN, pip or the like.
  • Flexibility: You can test any SSL/TLS enabled and STARTTLS service, not only webservers at port 443
  • Toolbox: Several command line options help you to run YOUR test and configure YOUR output
  • Reliability: features are tested thoroughly
  • Verbosity: If a particular check cannot be performed because of a missing capability on your client side, you'll get a warning
  • Privacy: It's only you who sees the result, not a third party
  • Freedom: It's 100% open source. You can look at the code, see what's going on and you can change it.
  • Heck, even the development is open (github)

Installation

You can download testssl.sh by cloning this git repository:

git clone --depth 1 --branch 2.9.5 https://github.com/drwetter/testssl.sh.git

Or help yourself downloading the ZIP archive https://github.com/drwetter/testssl.sh/archive/v2.9.5-1.zip. Then testssl.sh --help will give you some help upfront. More help: see doc directory. Older sample runs are at https://testssl.sh/.

Compatibility

testssl.sh is working on every Linux/BSD distribution out of the box. In 2.9.5 most of the limitations of disabled features from the openssl client are gone due to bash-socket-based checks. testssl.sh also works on other unixoid system out of the box, supposed they have /bin/bash and standard tools like sed and awk installed. System V needs to have GNU versions of grep installed. MacOS X and Windows (using MSYS2 or cygwin) work too. OpenSSL version >= 1.0.2 is recommended, you will get further with earlier openssl versions in this interim release though as most of the checks in 2.9 are done via sockets.

Update notification here or @ twitter.

Status

2.9.5 is an interim release snapshot from the current 2.9dev version. It has reached a point which is considered to be mature enough for day-to-day usage before taking the next step in the development of this project.

2.9.5 has less bugs and has evolved considerably since 2.8.

Features implemented in 2.9.5

  • Way better coverage of ciphers as most checks are done via sockets, using bash sockets where ever possible
  • Further tests via TLS sockets and improvements (handshake parsing, completeness, robustness)
  • Testing 359 default ciphers (testssl.sh -e/-E) with a mixture of sockets and openssl. Same speed as with openssl only but addtional ciphers such as post-quantum ciphers, new CHAHA20/POLY1305, CamelliaGCM etc.
  • TLS 1.2 protocol check via sockets in production
  • Finding more TLS extensions via sockets
  • TLS Supported Groups Registry (RFC 7919), key shares extension
  • Non-flat JSON output support
  • File output (CSV, JSON flat, JSON non-flat) supports a minimum severity level (only above supplied level there will be output)
  • Native HTML support instead going through 'aha'
  • LUCKY13 and SWEET32 checks
  • Ticketbleed check
  • LOGJAM: now checking also for known DH parameters
  • Support of supplying timeout value for openssl connect -- useful for batch/mass scanning
  • Parallel mass testing
  • Check for CAA RR
  • Check for OCSP must staple
  • Check for Certificate Transparency
  • Check for session resumption (Ticket, ID)
  • Better formatting of output (indentation)
  • Choice showing the RFC naming scheme only
  • File input for mass testing can be also in nmap grep(p)able (-oG) format
  • Postgres und MySQL STARTTLS support
  • Man page

Contributions

Contributions, feedback, bug reports are welcome! For contributions please note: One patch per feature -- bug fix/improvement. Please test your changes thouroughly as reliability is important for this project.

There's a coding guideline.

Please file bug reports @ https://github.com/drwetter/testssl.sh/issues.

Bug reports

Please file bugs in the issue tracker. Do not forget to provide detailed information, see https://github.com/drwetter/testssl.sh/wiki/Bug-reporting. Nobody can read your thoughts -- yet. And only agencies your screen ;-)


External/related projects

Please address questions not specifically to the code of testssl.sh to the respective projects

Cool web frontend

Mass scanner w parallel scans and elastic searching the results

Ready-to-go docker images are available at:

Brew package