Commit Graph

2844 Commits

Author SHA1 Message Date
a9103fdfee Put the redirection into the right spot 2023-10-30 15:27:37 +01:00
92b28c5f1c Fix weird bash globbing #2429
What was problematic was the error message when the certificate
stores were missing. This fixes it by redirecting the error
message to /dev/null so that if the sub function detects the missing
file it returns with an error by the program and not by executing
"basename"
2023-10-30 15:11:10 +01:00
b21c5ee780 Add IP protocol to debug msg 2023-10-11 15:22:46 +02:00
f50a958fa9 Merge pull request #2417 from vsbs-david/local_hostname_drill
Added drill command to get_a[aaa]_record() for local hostname
2023-10-11 15:19:44 +02:00
3f7428083e Used debugme function 2023-10-11 09:26:43 +02:00
cbefcf0feb Fixed redirect stderr to /dev/null, added debug echo for mDNS resolution failure, fixed some spelling 2023-10-10 13:55:34 +02:00
b8f770dbe3 Added drill command to get_a[aaa]_record() for local hostname 2023-10-10 09:05:48 +02:00
bdeda3ab1c Bump version number 2023-10-09 22:51:44 +02:00
e09e2c519c Fix SMTP detection.
Extended regex was missing -E.
2023-10-07 14:15:40 +02:00
16e6826225 Improve detection for POP3 and IMAP. 2023-10-07 13:56:39 +02:00
65da627820 better English 2023-10-03 15:56:18 +02:00
d46301e9f7 Deprecate --ssl-native 2023-10-03 15:51:58 +02:00
2acffa5a3f fix spellcheck issues 2023-10-03 15:06:46 +02:00
06e7205687 Support OpenSSL with no TLSv1
RFC 8996, Deprecating TLS 1.0 and TLS 1.1, states that TLS clients MUST NOT send a TLS 1.0 or TLS 1.1 ClientHello and MUST respond to a TLS 1.0 or TLS 1.1 ServerHello with a "protocol_version" alert.

At the moment, all versions of OpenSSL support TLS 1.0, TLS 1.1, and TLS 1.2. However, TLS 1.0 and TLS 1.1 are disabled in LibreSSL 3.8.1 and it is possible to compile OpenSSL without support for these protocols (using the configure options no-tls1, no-tls1_1, and no-tls1_2). This commit adds support for versions of $OPENSSL that do not support TLS 1.0 or TLS 1.1.
2023-09-07 07:26:48 -07:00
765b5855cc Merge pull request #2386 from drwetter/strict_parsing_HSTS
Strict parser for HSTS
2023-08-28 19:55:57 +02:00
01ab3acde5 Strict parser for HSTS
As suggested in #2381 this parses strictly the value for mag-age
in the HSTS header line. While it is implemented only in run_hsts()
it could be extracted to a separate functioni in the future and used
elsewhere too.

The improvement is more strict and catches e.g. '==' signs and issues
a warning. See https://www.rfc-editor.org/rfc/rfc6797#section-6.1.1 .

Also it is picky regarding quotes now which are only allowed enclosing
the value.
2023-08-28 18:33:41 +02:00
c55207d45c Merge pull request #2385 from drwetter/hide_fast
Hide --fast option in help() and issue a warning when it's used
2023-08-28 18:26:36 +02:00
0fcddff1cd Warn when using --fast
... in the terminal only for now.
2023-08-28 16:08:04 +02:00
d19675136a Deprecating $FAST / --fast
As this option shows inconsistencies / wrong results and a fix would require
too much work at this moment this option is being hidden from the help. It
wasn't in the ~/doc .

See #849 , #2382, #1732 etc.
2023-08-28 15:53:02 +02:00
79577a84eb Introducing variable OPENSSL2_HAS_TLS_1_3
If we run with supplied binary AND /usr/bin/openssl supports TLS 1.3
we now have a variable OPENSSL2_HAS_TLS_1_3 which is set to true.

It can be used for subsequent changes where we need TLS 1.3 for or
where it would be better to use TLS 1.3.
2023-08-28 15:42:17 +02:00
38a09d342c Fix another grep-3.8 warning on needlessly escaped exclamation mark.
See also #2241 and #2242.
2023-08-28 13:55:46 +02:00
858f00304c tiny clarification in debug mode 2023-06-02 16:57:47 +02:00
6e2b9ae1c6 Make clear where the parsing error comes from: SSL or TLS 2023-06-02 16:43:27 +02:00
eb76fd08cb Adds a warning when downloaded CRL is PEM format 2023-05-23 11:37:03 +02:00
ebcb5554a8 Fix CRL conversion issue when already in PEM format
If downloaded CRL file is already in PEM format, openssl command will fail as it is always trying to convert from a DER-encoded CRL. 
This commit is for adding a test of the CRL format prior to running the openssl crl conversion. 

Note: as the openssl verify command then assumes that a .pem tmpfile has been generated by the conversion, there would be an issue when the conversion was not needed (i.e. CRL already PEM-encoded) as that .pem would be missing; therefore I also added a copy of the .crl file to a .crl.pem file before the optional conversion.
2023-05-22 17:10:25 +02:00
9b8dc3a07e Fix misleading output
... when instructed to do no DNS queries at all
2023-05-16 09:05:04 +02:00
22a4f52774 Clarify comment, redone 2023-05-15 15:20:54 +02:00
6216bcd635 Revert "Update testssl.sh"
This reverts commit e33e0bc204.
2023-05-15 15:16:16 +02:00
e33e0bc204 Update testssl.sh
clarify comment
2023-05-15 15:04:59 +02:00
93466806f5 Added SNI to openssl call for testing secure client-initiated renegotiation 2023-05-15 08:13:21 +02:00
f0f6b1a4fb Typo in comment corrected 2023-05-12 14:26:27 +02:00
04f7b34028 Added SNI to openssl call for testing secure renegotiation 2023-05-12 13:53:54 +02:00
aa5235e658 Merge pull request #2346 from Odinmylord/3.1dev
Add information to RSA-PSS report
2023-04-01 09:51:27 +02:00
a04291fdb1 Merge pull request #2352 from dcooper16/pss_cert_tls13
Find RSASSA-PSS certificates with TLS 1.3
2023-03-31 16:38:14 +02:00
dc996ba2b9 Find RSASSA-PSS certificates with TLS 1.3
This commit fixes get_server_certificate() so that it can obtain certificates with RSASSA-PSS subject public keys over TLS 1.3.
2023-03-28 14:31:28 -07:00
5002dd23b1 Add support for brainpool curves with TLS 1.3
This commit adds support for the curves brainpoolP256r1tls13, brainpoolP384r1tls13, and brainpoolP512r1tls13.
2023-03-28 08:53:20 -07:00
f95d0dd09a Merge pull request #2328 from drwetter/w4ntun-merge
fixed DNS via Proxy
2023-03-23 14:31:17 +01:00
cf0c1c1f5f Added more details to the SignatureAlgorithms 2023-03-22 23:14:56 +01:00
d001bba86b Finalize DNS via Proxy
See #2328, original PR #2295 from @w4ntun .

Formally testssl.sh returned an error when it wasn't not possible to determine IP
addresses through DNS resolution, even if --proxy and --ip=proxy flags are set.
The main function always tried to determine IP addresses via DNS and exits with
a fatal error if it cannot do it. Although the client cannot get the IP, the
proxy could, so the SSL/TLS analysis is still possible.

This PR allows the analysis for an HTTP service via a proxy server and the DNS
traffic can be sent directly or through the proxy using the flag --ip=proxy.

ATTENTION: This may be a breaking change for those who don't have a local resolver.
They now have to add --ip=proxy.

In addition:
* help() was amended to add --ip=proxy (was only in the ~i/doc dir before)
* amending ~/doc dir to document it's better to add --nodns=min when there's
  no local resolver
2023-03-21 19:40:40 +01:00
b84e182ca2 Merge pull request #2332 from drwetter/sanitize_fileout
Make sure control chars from HTTP header don't end up in html,csv,json
2023-03-12 16:18:20 +01:00
2e33c483dd remove comma in tr as it was interpreted as such 2023-03-12 14:52:11 +01:00
fab67d0cca Remove CR in server banner
... which caused a problem in t/32_isHTML_valid.t.

Also the test for an empty server banner was simplified
2023-03-12 14:00:55 +01:00
06506b371e Make sure control chars from HTTP header don't end up in html,csv,json
This addresses the bug #2330 by implementing a function which removes
control characters from the file output format html,csv,json at the
output.

In every instance called there's a check before whether the string
contains control chars, hoping it'll save a few milli seconds.

A tr function is used, omitting LF.

It doesn't filter the terminal output and the log file output.
2023-03-11 13:38:28 +01:00
9afa277c02 another indent correction 2023-03-03 12:50:02 +01:00
2b6bd2f1dd fix indentation 2023-03-03 12:47:12 +01:00
581788ff39 Merge branch '3.1dev' of https://github.com/w4ntun/testssl.sh into w4ntun-3.1dev 2023-03-03 12:31:26 +01:00
a14fc5bdcf Fix Accept header
see #2325.

"whenever HTTP/1.1 is used then the Accept header uses "text/*" as a MIME type.
This causes some minor issues with some of the checks we are doing"
2023-02-20 15:01:40 +01:00
6f881dc70b Rename 3 jsonIDs in run_cipherlists(): breaking change
see #2316 / #2320

AVERAGE --> OBSOLETED
GOOD    --> STRONG_NOFS
STRONG  --> STRONG_FS
2023-02-05 19:32:08 +01:00
3d82f7cb21 Fix HTML output in Bash 5.2 and newer
As noted in #2304, the way that the '&' character is treated in the string part of a pattern substitution changed in Bash 5.2. As a result, the change that was made in #1481 to accommodate older versions of Bash (e.g., on MacOS) now causes testssl.sh to produce incorrect HTML output when run on Bash 5.2.

This commit encodes the '&' characters in the substitution strings in a way that produces correct results on multiple versions of Bash (3.2 on MacOS, 5.2 on Ubuntu 23.10, 5.0 on Ubuntu 20.04).
2023-02-03 14:18:02 -08:00
3670c1e4ad Removed non-relevant CA's that no longer have active certificates. 2023-02-02 01:13:00 +00:00