Skip to content

Commit b149fc4

Browse files
committed
Reorder, rephrase, timing
Also provide a runtime table, from a little research.
1 parent 45a264e commit b149fc4

1 file changed

Lines changed: 36 additions & 18 deletions

File tree

bin/Readme.md

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,57 @@
11

2-
Binaries
3-
========
2+
# Binaries
43

54
The precompiled binaries provided in this directory have extended support for weak crypto which is normally not in OpenSSL
65
or LibreSSL: 40+56 Bit, export/ANON ciphers, weak DH ciphers, weak EC curves, SSLv2 etc. -- all the dirty features needed for
7-
testing if you just ant to test with binaries. They also come with extended support for some advanced cipher suites and/or
6+
testing if you just want to test with binaries. They also come with extended support for a few advanced cipher suites and/or
87
features which are not in the official branch like (old version of the) CHACHA20+POLY1305 and CAMELLIA 256 bit ciphers.
98

109
# Security notices
1110

12-
The important thing upfront: **DO NOT USE THESE BINARIES FOR PRODUCTION PURPOSES**. A lot of security restrictions have been removed because we want to test how bad the servers are.
11+
The important thing upfront: **DO NOT USE THESE BINARIES FOR PRODUCTION PURPOSES**, at least not on the server side. A lot of security restrictions have been removed because we want to test how bad the servers are.
1312

1413

15-
More
16-
====
14+
# General
1715

18-
testssl.sh has emerged a longer while back, so in general these binaries are not needed anymore as weak crypto is covered by bash sockets if the binary from the vendor can't handle weak crypto. In a future release they could be be retired.
16+
The (stripped) binaries this directory are all compiled from the [old OpenSSL snapshot](https://github.com/testssl/openssl-1.0.2.bad) which adds a few bits to [Peter
17+
Mosman's openssl fork](https://github.com/PeterMosmans/openssl). The few bits are IPv6 support (except IPV6 proxy) and some STARTTLS backports. More, see the [README.md](https://github.com/testssl/openssl-1.0.2.bad/README.md). Also, as of now, a few CVEs were fixed.
1918

20-
Checks using binaries instead of bash sockets run a bit faster though. For modern servers the usage of the binaries provided by our project might come with a limited value: They don't support e.g. TLS 1.3 and lack nerwer TLS 1.2 ciphers. OTOH servers which only offer SSLv2 and SSLv3 became less common.
19+
Compiled Linux and FreeBSD binaries so far came from Dirk, other contributors see ../CREDITS.md . A few binaries were removed in the latest edition, which are Kerberos binaries and 32 Bit binaries. Those and binaries for more architectures can be retrieved from [contributed builds @ https://testssl.sh/](https://testssl.sh/contributed_binaries/). Those binaries are *not* stripped.
2120

22-
One other thing worth to mention is that any binary can handle protocols on top of SSL/TLS better (or at all) once encrypted connection is established, like retrieving the HTTP header. OTOH as of 2024/2025 distributors/vendors however still support weaker crypto with TLS 1.0 or TLS 1.1, most of them even support SSLv3. That is possible with some tweaks which testssl.sh applies. So using older binaries like the ones in this directory are very often not needed.
2321

22+
## Compilation instructions
2423

25-
General
26-
-------
27-
The (stripped) binaries this directory are all compiled from the [old OpenSSL snapshot](https://github.com/testssl/openssl-1.0.2.bad) which adds a few bits to [Peter
28-
Mosman's openssl fork](https://github.com/PeterMosmans/openssl). The few bits are IPv6 support (except IPV6 proxy) and some STARTTLS backports. More, see the [README.md](https://github.com/testssl/openssl-1.0.2.bad/README.md). Also, as of now, a few CVEs were fixed.
2924

30-
Compiled Linux and FreeBSD binaries so far came from Dirk, other contributors see ../CREDITS.md . A few binaries were removed in the latest edition, which are Kerberos binaries and 32 Bit binaries. Those and binaries for more architectures can be retrieved from [contributed builds @ https://testssl.sh/](https://testssl.sh/contributed_binaries/). Those binaries are not stripped.
25+
See [https://github.com/testssl/openssl-1.0.2.bad/00-testssl-stuff/Readme.md](https://github.com/testssl/openssl-1.0.2.bad/00-testssl-stuff/Readme.md)
3126

32-
The diff krb5-ciphers.diff shows the additional ciphers when using the kerberos binary.
3327

3428

35-
Compilation instructions
36-
------------------------
29+
## Conderations regarding binaries
30+
31+
testssl.sh has emerged a longer while back, so in general these binaries are not needed anymore as weak crypto is covered by bash sockets if the binary from the vendor can't handle weak crypto. In a future release they might be be retired, as they do not provide a overall benefit and als static linking with glibc doesn't work as flawlesly these days anymore as it used to be,
32+
33+
### Speed
34+
35+
Checks using binaries instead of bash sockets run a bit faster. However when using a default run, this is within the error margin and also depends on what the server is offering for ciphers and protocols. Of course also local issues play a role because of issues like file system caching. Here is a quick comparison for defaults run started from one ok-ish/beefy Linux 8 core system to one server IP each:
36+
37+
-----
38+
39+
public server | remark | runtimes supplied openssl [s] | runtimes /usr/bin/openssl [s] |
40+
------------------|----------------------|-------------------------------| ------------------------------|
41+
testssl.sh | TLS 1.0 - 1.3 | 104, 77, 88, 97 | 106, 100, 95, 98
42+
testssl.net | no RSA ciph.,TLS>=1.2| 79, 76, 85, 80 | 73, 66, (107), 72
43+
heise.de | no TLS 1.0 | 102, 95, 104 | 98, 95, 99
44+
owasp.org | TLS >= 1.2 | 85, 96, 105 | 88, 97, 98
45+
vulnerable old system | SSLv3 - TLS 1.2 | 100, 104, 103 | 134, 138, 141
46+
47+
As you can see which binary you pick does not matter much. To start with: The standard deviation even for a single target can be much bigger -- only the last system is internal and not in the internet. And comparing different targets with respect to their runtime depends also what the server is offering in terms of ciphers, vulnerabilities etc. .
48+
49+
-----
50+
51+
### Capabilities
52+
53+
For modern servers the usage of the binaries provided by our project might come also with a limited value: They don't support e.g. TLS 1.3 and lack newer TLS 1.2 ciphers. They do support SSLv2 through TLS 1.2 though but servers with deprecated or vulnerable protocols protocols became less common.
54+
55+
One other thing worth to mention is that any binary can handle protocols on top of SSL/TLS better (or at all) once encrypted connection is established, like retrieving the HTTP header. OTOH as of 2024/2025 distributors/vendors however still support weaker crypto with TLS 1.0 or TLS 1.1, most of them even support SSLv3. That is possible with some tweaks which testssl.sh applies. So using older binaries like the ones in this directory are very often not needed.
3756

38-
See [https://github.com/testssl/openssl-1.0.2.bad/00-testssl-stuff/Readme.md](https://github.com/testssl/openssl-1.0.2.bad/00-testssl-stuff/Readme.md)
3957

0 commit comments

Comments
 (0)