Commit Graph
100 Commits
Author SHA1 Message Date
Dirk Wetter cbd2b4da1e Add HAS_LDAP to global vars
... and bail out if it is not supported.
2026-07-10 13:51:39 +02:00
Dirk Wetter d7f5095042 Exempt MacOS with LibreSSL to run STARTTLS via LDAP 2026-07-10 13:40:03 +02:00
Dirk Wetter 8dce14187d Fix confusion when scanning TLS-1.3-only hosts
When scanning hosts which offer only TLS 1.3 under some circumstances (e.g. using
MacOS) the scan stopped and prompted the user . It happened always when $OPENSSL
supported TLS 1.3. It did not when this was not the case.

This fixes that (see #3083) for 3.3dev by just skipping the rest in determine_optimal_proto()
when TLS13_ONLY is true.

Also it fixes missing line feeds for servoce detecttion and order in which DNS HTTPS
RR are displayed.
2026-07-09 13:13:15 +02:00
Dirk WetterandGitHub deda4c7627 Merge pull request #3080 from ericcgu/ericcgu-patch-1
fix: inverted return check in sym-encrypt() at testssl.sh:14741 makes …
2026-07-08 20:45:06 +02:00
Dirk WetterandGitHub 044cfee81b Merge pull request #3078 from testssl/fix_empty_httpsrr
Fix empty result for HTTPS_RR for Mac and friends
2026-07-08 18:24:45 +02:00
Dirk WetterandGitHub 62ca07cc33 Merge pull request #3059 from TheraNinjaCat/fix-cert-trust-wildcard-identifier-3051
Fixed 'cert_trust_wildcard' identifier when multiple certificates are…
2026-07-08 18:24:14 +02:00
Dirk 2dba5fea1b fix typo 2026-07-06 11:41:18 +02:00
Dirk 44d6b7adbf Fix empty result for HTTPS_RR for Mac and friends
... also improve error handling by adding return values in
*https_rr functions.

The error for ~Macs occured because for interpretation of
raw TYPE65 DNS data it was just 1 returned instead of 0
--for empty records.
2026-07-06 11:36:15 +02:00
Dirk WetterandGitHub 9fdf8028ba Merge pull request #3076 from SteveVaneeckhout/fix-ipv4-only-flag-ignored
Fix -4/-6 flag being ignored when no specific test is selected
2026-06-25 22:34:27 +02:00
Dirk WetterandGitHub df6cd77195 Merge pull request #3075 from lapo-luchini/3.3dev_fix_escaping
Fix escaping.
2026-06-23 23:15:43 +02:00
Dirk WetterandGitHub 56ba1ab229 Merge pull request #3047 from testssl/https_rr
Provide DNS HTTPS RR functionality
2026-06-22 18:16:35 +02:00
Dirk Wetter 859d24df20 HTTPS DNS RR in manual 2026-06-22 16:37:32 +02:00
Dirk Wetter 50966dc1d6 Merge branch '3.3dev' into https_rr 2026-06-22 16:26:38 +02:00
Dirk Wetter dca6434604 Compare QUIC section with DNS HTTPS RR
Also: make "A(AAA) record via:" bold, to be in line with the other keys
2026-06-22 16:20:13 +02:00
Dirk Wetter 7e97b243d1 Introduce global HTTPS_RR variable
... which is initialized with "initt" to distinguish between not being tested yet and no value.
We only display the value once per $NODE for the first IP address being tested.

HTTPS_RR doesn't have to be reset in reset_hostdepended_vars()

Few comments were added / indentation fixed (not relevant to this PR)
2026-06-22 14:59:13 +02:00
Dirk WetterandGitHub 689516c378 Merge pull request #3073 from testssl/my-patch-2
clarify what a breaking change is
2026-06-22 13:06:55 +02:00
Dirk WetterandGitHub 492882577d clarify what a braking change is 2026-06-22 13:01:56 +02:00
Dirk WetterandGitHub 8b653d0abf Merge pull request #3072 from testssl/my-patch-1
AI section + minor improvements
2026-06-22 12:56:35 +02:00
Dirk WetterandGitHub a75e25a958 Minor changes 2026-06-22 12:55:45 +02:00
Dirk WetterandGitHub 74ba0c4f1e Add links 2026-06-22 12:47:24 +02:00
Dirk WetterandGitHub efab5f9165 AI section + minor improvements
- AI generated code becomes more important, so we add a new section (albeit bash support is not really as good as for other languages).
- streamlined comment, which is a comment
2026-06-22 12:33:11 +02:00
Dirk WetterandGitHub a55fc6d5d4 Merge pull request #3071 from testssl/potato-20-revive-hsts-preload
Potato 20 revive hsts preload
2026-06-20 18:34:54 +02:00
Dirk Wetter bfdfaf49a6 Merge branch 'potato-20-revive-hsts-preload' of github.com:testssl/testssl.sh into potato-20-revive-hsts-preload 2026-06-20 17:19:38 +02:00
Dirk Wetter bb408fd7d5 reflect renaming the variable
and u+x the script
2026-06-20 17:17:36 +02:00
Dirk Wetter a13eb751ec Credit where credits is due
Amend manyak
2026-06-20 16:54:30 +02:00
Dirk Wetter 083f0148ca Move --phone-out to 3.3dev 2026-06-20 16:53:36 +02:00
Dirk Wetter fda8d34edd Minor changes to #3060 (HSTS preload)
- readability: case statements!
- we query the API, not the list
- safe_echo makes echo safer
2026-06-20 16:46:32 +02:00
Dirk Wetter 2b00b984f9 Merge branch 'revive-hsts-preload' of https://github.com/potato-20/testssl.sh into potato-20-revive-hsts-preload 2026-06-20 16:10:52 +02:00
Dirk WetterandGitHub 2a30ddc35e Merge pull request #3069 from testssl/dependabot/github_actions/actions/checkout-7
Bump actions/checkout from 6 to 7
2026-06-20 15:56:44 +02:00
Dirk WetterandGitHub 8d0f86eada Merge pull request #3066 from logopk/fix/issuer-cn-linecount
[Bug] FIXME: issuer_CN error with more than 5 lines in Issuer #3065
2026-06-18 11:29:47 +02:00
Dirk WetterandGitHub 53d0125b44 Merge pull request #3068 from testssl/dependabot/github_actions/actions/checkout-6
Bump actions/checkout from 4 to 6
2026-06-18 09:51:44 +02:00
Dirk WetterandGitHub 826449115c Merge pull request #3064 from testssl/automate_pandoc
Automate pandoc
2026-06-17 11:24:25 +02:00
Dirk Wetter 2dc81417f6 git push 2026-06-17 11:21:31 +02:00
Dirk Wetter 85f80a6487 change template name 2026-06-17 11:12:53 +02:00
Dirk Wetter 1297c88d26 fix syntax error 2026-06-17 11:08:24 +02:00
Dirk Wetter 8fd171783c Correct dir name, autopush gnerated files 2026-06-17 11:05:47 +02:00
Dirk Wetter 4f874b3ebf should better run on PR 2026-06-17 10:51:38 +02:00
Dirk Wetter 1d6045ccd8 Add workflow for pandoc 2026-06-17 10:43:05 +02:00
Dirk Wetter 0359a363ae Change title --> trigger pandoc 2026-06-17 10:41:49 +02:00
Dirk Wetter 1f9e61afbc Fix CI runner for Mac 2026-06-16 13:15:11 +02:00
Dirk Wetter 913bf1406d Save work
- parsing output from old dig versions (Mac) works for almost every svc_key
- for old dig versions: double lined RR work (but output is not nice yet)
- cleaned up comments
- separate function https_rr_raw_parser()
- commented output from claude.ai for ech for later interpretation
- get_mx_record() has a warning when get_https_rrecord returned != 0
2026-06-16 11:00:14 +02:00
Dirk WetterandGitHub e0af44a7be Merge pull request #3058 from testssl/debug_hooks
Provide better debugging means for GH runners
2026-06-10 14:11:14 +02:00
Dirk 8e25163625 Remove QUIC from runner 2026-06-10 10:03:25 +02:00
Dirk Wetter 37135fa752 Save work
- dig needs to be called with $DIG_R
- basic parsing for alpn on Mac should be fine now

- case statement filled with moste of the functions
- port function tested + added, but not called yet
- ipv4hint function tested + added  but not called yet
- ipv6hint function tested + added  but not called yet. Doesn't do compression of ipv6 address yet
- stub functions dohpath+ech
2026-06-09 22:14:45 +02:00
Dirk 457f8fd0a0 Provide better debugging means
This is just to assist debugging of the runners, so that
we can grab in a case needed the screen and stderr .

* there's a script t/03_debug.t.DISABLED which needs to be renamed then
* it utilises IPC::Run3
- also showing the PATH is added for both runners
- Readme amended accordingly
2026-06-09 13:43:43 +02:00
Dirk WetterandGitHub c25a0ad491 Merge pull request #3057 from testssl/drwetter-patch-1
Hide CI badges for now
2026-06-09 10:39:41 +02:00
Dirk WetterandGitHub 2f591423f2 fix spelling 2026-06-09 10:39:03 +02:00
Dirk WetterandGitHub 5205310c0c Remove CI badges
... as they reflect the PR status and not the current branch

See #2794
2026-06-09 10:36:24 +02:00
Dirk WetterandGitHub e7204bd524 Merge pull request #3056 from testssl/revert-3055-drwetter-patch-1
Revert "Trying to fix the badge issue"
2026-06-09 10:32:16 +02:00
Dirk WetterandGitHub f634570af7 Revert "Trying to fix the badge issue" 2026-06-09 10:31:37 +02:00
Dirk WetterandGitHub fbedfe5f5f Merge pull request #3055 from testssl/drwetter-patch-1
Trying to fix the badge issue
2026-06-09 10:19:40 +02:00
Dirk WetterandGitHub 01f9b49549 Update unit_tests_ubuntu.yml
... also for the ubuntu runner
2026-06-09 10:18:52 +02:00
Dirk WetterandGitHub b9dda9312d Trying to fix the badge issue
... by having the runner only act on 3.3dev. Sounds counter intuitive but I was recommended to try
2026-06-09 10:16:50 +02:00
Dirk WetterandGitHub db014a6289 Merge pull request #3054 from testssl/drwetter-patch-1
Fix badges, try 2
2026-06-09 09:58:42 +02:00
Dirk WetterandGitHub ea16c81e97 Fix badges, try 2
* comment in status badges (try)
* stars getting to work again
2026-06-09 09:57:21 +02:00
Dirk WetterandGitHub fe080150cf Merge pull request #3053 from testssl/drwetter-patch-1
Handle badges, remove 1 bracket
2026-06-09 09:45:10 +02:00
Dirk WetterandGitHub 1bf15f41e1 Handle badges 2026-06-09 09:42:50 +02:00
Dirk WetterandGitHub cfde1df489 Merge pull request #3050 from potato-20/add-modern-security-headers
Report additional modern security headers (INFO)
2026-06-09 09:22:54 +02:00
Dirk WetterandGitHub 8f588813c0 Merge pull request #3049 from potato-20/fix-mx-host-port-2986
Fix --mx host:port parsing and incorrect no-MX message (#2986)
2026-06-08 18:33:32 +02:00
Dirk Wetter 62701f2d5e Merge branch '3.3dev' into https_rr 2026-06-08 17:50:20 +02:00
Dirk WetterandGitHub 654dc18760 Merge pull request #3052 from testssl/mac_runner_update
Update runner to macos-26 (arm64 as before)
2026-06-08 17:08:16 +02:00
Dirk Wetter 3c5b733431 Update runneer to macos-26 (arm64 as before)
... as they were strange failures in the past.

Supported runners: https://docs.github.com/en/actions/reference/runners/github-hosted-runners#single-cpu-runners .
Details: https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md
2026-06-08 16:41:37 +02:00
Dirk Wetter 51ba8327a8 introduce subfunctions decode_*
First implemented and tested working is decode_https_rr_alpn().
Also we use the svk params in a case statement to decipher the
hexstream better.

The hexstream ($line) has now no blanks anymore. They seem to be
arbitrary.

Variables need to be declared in get_https_rrecord() .
2026-06-02 19:04:17 +02:00
Dirk Wetter a92cd8f702 fix shellcheck complaint 2026-06-01 16:56:47 +02:00
Dirk Wetter 84bd9dd1a3 Updatesr get_https_rrecord()
- quote vars (hoping it'll resolve the Mac runner issue)
- make sure CNAMEs are properly parsed
- end get_https_rrecord() earlier when there's no record but DNS binaries are "HTTPS record aware"
- while loop was redundant
- better comments

Elsewhere:

make sure get_https_rrecord is called with a trailing dot for the NODE
2026-06-01 16:14:29 +02:00
Dirk Wetter ba7d9604a9 Getting from github runner under MacOS
as there is an inexplicable difference between a real Mac
which passes the run and the one in github

-"DNS_HTTPS_rrecord","testssl.sh/81.169.235.32","443","OK","81.169.235.32","",""
+"DNS_HTTPS_rrecord","testssl.sh/81.169.235.32","443","OK","1 . alpn='h2'","",""

The first line comes from the runner
2026-06-01 10:14:25 +02:00
Dirk Wetter e365ccf03f try to squash the baseline comparison check 2026-05-31 19:59:01 +02:00
Dirk WetterandGitHub 7f63e73ec3 Merge pull request #3046 from SteveVaneeckhout/fix-permissions-policy-duplicate
Fix Permissions-Policy header listed twice in output
2026-05-30 17:47:56 +02:00
Dirk Wetter e0c0a6658f Provide HTTPS RR functionality
This is a fresh start for #2484 as the PR wasn't ready yet for 3.2 by the time it was released. And it continues #2866
which was kind of messed up by accident.

The info for the HTTPS RR shows up in the very beginning, i.e. in `service_detection()`. All keys are listed now in bold, values in a regular font.

`get_https_rrecord()` was introduced by copying and modifying `get_caa_rr_record()`.

There's a similar obstacle as with CAA RRs: older binaries show the  resource records binary encoded. Thus a new set of global vars is introduced HAS_*_HTTPS which check whether the binaries support decoding the RR directly. As of now raw decoding doesn't work completely.

Todo:
- Add logic in QUIC
    - if RR is detected and not QUIC is possible
    - add time for QUIC detection when RR is retrieved
- show full HTTPS RR record, at least when having a new DNS client
- coninue with raw decoding, if possible (otherwise problematic for MacOS)
- shorten the comments in `get_https_rrecord()`
- man page
- when ASSUME_HTTP is set and no services was detected: this needs to be handled
- The placement of the output should be reconsidered and/or cached when multiple IPs belong to a FQDN
2026-05-30 17:40:34 +02:00
Dirk WetterandGitHub 316b1a8014 Merge pull request #3045 from testssl/add_fs_data_clientsimulation_json
Add fs data clientsimulation json
2026-05-29 16:07:24 +02:00
Dirk 209e76541e Using a compariable Linux distro in the firstplace for updating handshake would have been great ;-) 2026-05-29 15:20:17 +02:00
Dirk ec99148700 Fix html output runner 2026-05-29 13:00:58 +02:00
Dirk 1ee1a60a99 var name append_fileout is clearer 2026-05-29 10:53:28 +02:00
Dirk 566e1b1f65 Fix diff complaint raised by ./t/12_diff_opensslversions.t 2026-05-29 10:33:03 +02:00
Dirk cff2c0810c Add Linux, not Mac baseline ;-) 2026-05-28 20:41:00 +02:00
Dirk Wetter 01d58f5e9c update client simulation data 2026-05-28 19:07:28 +02:00
Dirk Wetter cf66ad61bd Add forward secrecy data to file output
This fixes #3040 .

Also this removes the debug lines within the if statement (bottom of run_client_simulation() ), probably
a historic leftover.
2026-05-28 19:03:39 +02:00
Dirk WetterandGitHub 9567e65a01 Merge pull request #3043 from testssl/issue_cmdline_warnings
Introduce early warning function
2026-05-28 13:31:27 +02:00
Dirk Wetter 75376d38bf Introduce early warning function
... which warns also via file output when not recommended command
line options are used.

This function named issue_cmdline_warnings() is being called in
lets roll after all fileout() functions has been initialized.
It needs to make use of fileout_insert_warning() though because
otherwise the JSON output is not correct.

Besides the previoulsy introduced warning when scanning IP addresses,
warnings of usage of '--fast' and '--ssl-native' will end up also
in a file now which gives ther tools using the machine readable
output to detect bad scan conditions.

Also warnings when scanning the most known IPv4 addresses
from Cloudflare, Google and Quad9, are avoided.
2026-05-28 10:37:16 +02:00
Dirk WetterandGitHub ca99b45f1f Merge pull request #3042 from testssl/grhza-3.3dev
Improve PR #3041
2026-05-27 18:16:42 +02:00
Dirk Wetter f8af511952 Improve PR #3041
* move message when scanning IP address to the very beginning, inside parse_cmd_line()
* improve message
* just check whether there are no chars a-zA-Z

* move [[ $caa_node =~ '.'$ ]] || caa_node+="." into the while loop
2026-05-27 16:53:06 +02:00
Dirk WetterandGitHub 2f51cff728 Merge pull request #3039 from phpipam/3.3dev
Added link to php-ssl Certificate scanning integration
2026-05-19 17:27:07 +02:00
Dirk WetterandGitHub 84235d35c0 Merge pull request #3038 from testssl/more_handshakes_updates
Client handshake updates
2026-05-18 22:14:26 +02:00
Dirk 7871d800f9 adjust baseline runner output 2026-05-18 21:30:57 +02:00
Dirk 01b7ad7cc8 correct name 2026-05-18 21:30:34 +02:00
Dirk 56697cee48 Consolidate handshakes for all Safaris 26.4
Looked before at ja3, but for Chromium-browsers ja4 is relevant.
The client column needed to be extended with 1 space.
2026-05-18 21:16:43 +02:00
Dirk b4e58dfbb5 Consolidated Handshakes
went through a couple of pcap files and determined ja3 + ja4 sums.

- Android 15/16 are the same (previously ja3 taken instead of ja4 and wrong host. One has to use chrome !)
- Edge 101/Chrome 101 are the same (will be deprated next time)
- surprisingly Java 17.0.3 and 21.0.6 were the same.

- Added: Ja3/ja4 for old Apple Mail and Thunderbird
2026-05-18 18:45:04 +02:00
Dirk 7897cdcd84 Android 16
As mentioned in the comment: For Androids ja3 is is not unique, probably because of GREASE.
One can add two handshakes after another and they are different. ja4 seems more consistent here.

This should be kept in mind for all clients "supplying some grease"
2026-05-18 16:50:06 +02:00
Dirk 56e4a74485 Add OpenSSL 4.0 2026-05-17 15:23:42 +02:00
Dirk a35e9f816d Broaden table for client simulation
... as some clients are the same and space wasn't enough.
2026-05-16 16:14:24 +02:00
Dirk dd4c0b371d Handshakes for iOS + iPadOS 26.4. added 2026-05-16 16:04:13 +02:00
Dirk 7be3897437 Update MacOS/Safari 26.4
it has PQC kx finally, whohoo
2026-05-15 21:31:06 +02:00
Dirk 14e8df3fab Update readme wrt ja3/ja4 + imotr tweaks 2026-05-15 21:30:07 +02:00
Dirk 60131b4b5d - Update Apple Client Simulations 2026-05-15 21:28:54 +02:00
Dirk WetterandGitHub 0e59b983f1 Merge pull request #3030 from testssl/fix_unicode_3003
Fix DN conversion when reading certificate issuer
2026-04-22 15:34:21 +02:00
Dirk WetterandGitHub 146605e740 Merge pull request #3031 from testssl/fix_doc-problem_3029
Fix doc error regarding MAX_SOCKET_FAIL + MAX_OSSL_FAIL
2026-04-20 18:58:51 +02:00
Dirk b773fa9939 Fix doc error regarding MAX_SOCKET_FAIL + MAX_OSSL_FAIL
The trailing error messages were swapped in the paragraphs /
description for MAX_SOCKET_FAIL + MAX_OSSL_FAIL .

This fixes the confusion for 3.3dev , see #3028 .
2026-04-20 18:43:59 +02:00
Dirk b573a4f786 Fix DN conversion when reading certificate issuer
This fixes #3003 .

The conversion to proper UTF-8 should have taken place by just using
`-nameopt RFC2253`, see manpage openssl-namedisplay-options(1ssl).

As @dcooper16 suggested removing esc_msb should help. This may look
counterintuitive but works.
2026-04-20 18:09:36 +02:00
Dirk WetterandGitHub d2d684e31b Merge pull request #3029 from testssl/fix_fix_2809
Address missing extended_master secret extension properly
2026-04-20 17:49:24 +02:00
Dirk cff949bb90 Address missing extended_master secret extension properly
This PR "fixes feature" #2809 which was formerly not properly implemented in #2982,
see comment https://github.com/testssl/testssl.sh/issues/2806#issuecomment-4164847538.

Now TLS 1.3.-only servers won't get penalized when the master secret extension
is missing.
2026-04-20 16:31:44 +02:00