mirror of
				https://github.com/drwetter/testssl.sh.git
				synced 2025-10-31 05:45:26 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			163 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
 | |
| ## Intro
 | |
| 
 | |
| 
 | |
| 
 | |
| [](https://github.com/testssl/testssl.sh/LICENSE)
 | |
| 
 | |
| 
 | |
| 
 | |
| [](https://github.com/testssl/testssl.sh/actions/workflows/unit_tests_ubuntu.yml)
 | |
| [](https://github.com/testssl/testssl.sh/actions/workflows/unit_tests_macos.yml)
 | |
| [](https://github.com/testssl/testssl.sh/blob/3.2/Dockerfile.md)
 | |
| 
 | |
| [
 | |
| [](https://gitter.im/testssl/testssl.sh?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
 | |
| 
 | |
| `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.
 | |
| * Machine readable output (CSV, two JSON formats), also HTML output.
 | |
| * No need to install or to configure something.  No gems, CPAN, pip or the like.
 | |
| * Works out of the box: Linux, MacOS, FreeBSD, NetBSD, WSL2, MSYS2/Cygwin, OpenBSD needs bash.
 | |
| * A Dockerfile is provided, there's also an official container build @ dockerhub and GHCR.
 | |
| * Flexibility: You can test any SSL/TLS enabled and STARTTLS service, not only web servers at port 443.
 | |
| * Toolbox: Several command line options help you to run *your* test and configure *your* output.
 | |
| * Reliability: features are tested thoroughly.
 | |
| * 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.
 | |
| * The development is free and open @ GitHub and participation is welcome.
 | |
| * Unit tests ensure maturity (output is consistent, JSON is valid, runs under Linux+MacOS etc)
 | |
| 
 | |
| ### License
 | |
| 
 | |
| This software is free. You can use it under the terms of GPLv2, see LICENSE.
 | |
| 
 | |
| Attribution is important for the future of this project -- also in the
 | |
| internet. Thus if you're offering a scanner based on testssl.sh as a public and/or
 | |
| paid service in the internet you are strongly encouraged to mention to your audience
 | |
| that you're using this program and where to get this program from. That helps us
 | |
| to get bugfixes, other feedback and more contributions.
 | |
| 
 | |
| ### Compatibility
 | |
| 
 | |
| Testssl.sh is working on every Linux/BSD distribution and MacOS out of the box. Latest by 2.9dev
 | |
| most of the limitations of disabled features from the openssl client are gone
 | |
| due to bash-socket-based checks. An old OpenSSL-bad version is supplied but
 | |
| but you can also use any LibreSSL or OpenSSL version.
 | |
|    testssl.sh also works on other unixoid systems out of the box, supposed they have
 | |
| `/bin/bash` >= version 3.2 and standard tools like sed and awk installed. An implicit
 | |
| (silent) check for binaries is done when you start testssl.sh . System V needs probably
 | |
| to have GNU grep installed. Windows (using MSYS2, Cygwin or WSL) work too.
 | |
| 
 | |
| Update notifications can be found at [github](https://github.com/testssl/testssl.sh) or most important ones @ [mastodon](https://infosec.exchange/@testssl) or [bluesky](https://bsky.app/profile/testssl.bsky.social). [twitter](https://twitter.com/drwetter) is not being used anymore.
 | |
| 
 | |
| ### Installation
 | |
| 
 | |
| You can download testssl.sh branch 3.2 just by cloning this git repository:
 | |
| 
 | |
|     git clone --depth 1 https://github.com/testssl/testssl.sh.git
 | |
| 
 | |
| 3.2 is the latest stable branch which evolved from 3.1dev. In June 2025 there was a last bugfix release for the former stable version named old-stable, which is 3.0.10. Please use 3.2 **now**, as 3.0.x will not get any updates.
 | |
| 
 | |
| #### Docker
 | |
| 
 | |
| Testssl.sh has minimal requirements. As stated you don't have to install or build anything. You can just run it from the pulled/cloned directory. Still if you don't want to pull the GitHub repo to your directory of choice you can pull a container from dockerhub and run it:
 | |
| 
 | |
| ```
 | |
| docker run --rm -ti  drwetter/testssl.sh <your_cmd_line>
 | |
| ```
 | |
| 
 | |
| or from GHCR (GitHub Container Registry which supports more platforms: linux/amd64, linux/386, linux/arm64, linux/arm/v7, linux/arm/v6, linux/ppc64le):
 | |
| 
 | |
| ```
 | |
| docker run --rm -it ghcr.io/testssl/testssl.sh <your_cmd_line>
 | |
| ```
 | |
| 
 | |
| Or if you have cloned this repo you also can just ``cd`` to the INSTALLDIR and run
 | |
| 
 | |
| ```
 | |
| docker build . -t imagefoo && docker run --rm -t imagefoo testssl.net
 | |
| ```
 | |
| 
 | |
| For more please consult [Dockerfile.md](https://github.com/testssl/testssl.sh/blob/3.2/Dockerfile.md).
 | |
| 
 | |
| ### No Warranty
 | |
| 
 | |
| Usage of the program is without any warranty. Use it at your own risk.
 | |
| 
 | |
| Testssl.sh is intended to be used as a standalone CLI tool. While we tried to apply best practise security measures and sanitize external input, we can't guarantee that the program is without any vulnerabilities. Running as a web service may pose security risks and you're advised to apply additional security measures. Validate input from the user and from all services which are queried.
 | |
| 
 | |
| ### Status
 | |
| 
 | |
| Given the current manpower we only support n-1 versions. We started a 3.3.dev branch where further development takes place before 3.4 becomes the stable version and 3.2 becomes old-stable. As said, 3.0.x became EOL.
 | |
| 
 | |
| ### Documentation
 | |
| 
 | |
| * .. it is there for reading. Please do so :-) -- at least before asking questions. See man page in groff, html and markdown format in `~/doc/`.
 | |
| * [https://testssl.sh/](https://testssl.sh/) will help to get you started.
 | |
| * There's also an [AI generated doc](https://deepwiki.com/testssl/testssl.sh), see also below.
 | |
| * Will Hunt provides a longer [description](https://www.4armed.com/blog/doing-your-own-ssl-tls-testing/) for an older version (2.8), including useful background information.
 | |
| 
 | |
| ### Contributing
 | |
| 
 | |
| A lot of contributors already helped to push the project where it currently is, see [CREDITS.md](https://github.com/testssl/testssl.sh/blob/3.2/CREDITS.md). Your contribution would be also welcome! There's an [issue list](https://github.com/testssl/testssl.sh/issues). To get started look for issues which are labeled as [good first issue](https://github.com/testssl/testssl.sh/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22), [for grabs](https://github.com/testssl/testssl.sh/issues?q=is%3Aissue+is%3Aopen+label%3A%22for+grabs%22) or [help wanted](https://github.com/testssl/testssl.sh/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22). The latter is more advanced. You can also lookout for [documentation issues](https://github.com/testssl/testssl.sh/issues?q=is%3Aissue%20state%3Aopen%20label%3Adocumentation), or you can help with [unit testing](https://github.com/testssl/testssl.sh/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22unit%20test%22) or improving github actions.
 | |
| 
 | |
| It is recommended to read [CONTRIBUTING.md](https://github.com/testssl/testssl.sh/blob/3.2/CONTRIBUTING.md) and please also have a look at he [Coding Convention](https://github.com/testssl/testssl.sh/blob/3.2/Coding_Convention.md). Before you start writing PRs with hundreds of lines, better create an issue first.
 | |
| 
 | |
| In general there's also some maintenance burden, like maintaining handshakes and CA stores etc. . If you believe you can contribute and be responsible to one of those maintenance task, please speak up. That would free resources that we could use for development.
 | |
| 
 | |
| 
 | |
| ### Bug reports
 | |
| 
 | |
| Bug reports are important. It makes this project more robust.
 | |
| 
 | |
| Please file bugs in the issue tracker @ GitHub. Do not forget to provide detailed information, see the template for issues, and further details @
 | |
| https://github.com/testssl/testssl.sh/wiki/Bug-reporting. Nobody can read your thoughts -- yet. And only agencies your screen ;-)
 | |
| 
 | |
| You can also debug yourself, see [here](https://github.com/testssl/testssl.sh/wiki/Findings-and-HowTo-Fix-them).
 | |
| 
 | |
| ----
 | |
| 
 | |
| ### External/related projects
 | |
| 
 | |
| Please address questions not specifically to the code of testssl.sh to the respective projects below.
 | |
| 
 | |
| #### AI powered docs @ DeepWiki
 | |
| * https://deepwiki.com/testssl/testssl.sh
 | |
| 
 | |
| #### Web frontend
 | |
| * https://github.com/johannesschaefer/webnettools
 | |
| * https://github.com/TKCERT/testssl.sh-webfrontend
 | |
| 
 | |
| #### Mass scanner w parallel scans and elastic searching the results
 | |
| * https://github.com/TKCERT/testssl.sh-masscan
 | |
| 
 | |
| #### Privacy checker using testssl.sh
 | |
| * https://privacyscore.org
 | |
| 
 | |
| #### Nagios / Icinga Plugins
 | |
| * https://github.com/dnmvisser/nagios-testssl (Python 3)
 | |
| * https://gitgud.malvager.net/Wazakindjes/icinga2_plugins/src/master/check_testssl.sh (Shell)
 | |
| 
 | |
| #### pentest2xlsx: generate Excel sheets from CSV
 | |
| * https://github.com/AresS31/pentest2xlsx (python)
 | |
| 
 | |
| #### Brew package
 | |
| 
 | |
| * see [#233](https://github.com/testssl/testssl.sh/issues/233) and
 | |
|   [https://github.com/Homebrew/homebrew](https://github.com/Homebrew/homebrew)
 | |
| 
 | |
| #### Daemon for batch execution of testssl.sh command files
 | |
| * https://github.com/bitsofinfo/testssl.sh-processor
 | |
| 
 | |
| #### Daemon for batch processing of testssl.sh JSON result files for sending Slack alerts, reactive copying etc
 | |
| * https://github.com/bitsofinfo/testssl.sh-alerts
 | |
| 
 | |
| #### GitHub Actions
 | |
| * https://github.com/marketplace/actions/testssl-sh-scan
 | 
