Commit Graph
5517 Commits
Author SHA1 Message Date
Dirk 71322d89cb Squash complains by perlcritic
and enable warnings
2026-09-01 15:07:52 +02:00
Dirk Wetter d857e0fe60 Add .perlcritic policy overrides for test suite 2026-08-31 23:26:36 +02:00
Dirk Wetter 23129834b9 Add all other perl modules too 2026-08-31 22:04:07 +02:00
Dirk Wetter a2027d527f fix perttidy and cpan-audit 2026-08-31 20:50:00 +02:00
Dirk Wetter f77dcbefd5 Selfcheck removed
(not sure whether that was right to try in the first place, probably not)
2026-08-31 20:35:02 +02:00
Dirk Wetter d58557b430 Newer versions
- use newer checkout hash
- use appropriate perl version
2026-08-31 20:30:35 +02:00
Dirk Wetter f5d228e28e Add Perl static analysis
* Run perl -c on every t/*.t file as a fast pre-check before prove.
* Add Perl::Critic (a curated policy set) and perltidy --check for the Perl test code — the repo lints its bash with shellcheck but has zero linting for its Perl.
* Add Test::NoWarnings (and/or Test::Fatal) to the test harness so warnings/exceptions in the code under test fail the build.

Not yet sure about using the hash / SHA-pinning. To be reconsidered later
2026-08-31 20:05:30 +02:00
Dirk WetterandGitHub 853850e3f4 Merge pull request #3125 from testssl/CA_store_update_2608
CA store update 2608
2026-08-28 10:42:04 +02:00
Dirk Wetter 639f45e8d0 Update 2026/08 2026-08-28 00:59:31 +02:00
Dirk Wetter 296575029d Still MS.pem still contains DST Root CA X3 2026-08-28 00:58:59 +02:00
Dirk Wetter 2571730bb1 2026-08-13 from https://curl.haxx.se/docs/caextract.html 2026-08-24 19:45:28 +02:00
Dirk Wetter f9d6355002 store from jdk-25.0.4.1
from https://download.oracle.com/java/25/latest/jdk-25_linux-x64_bin.tar.gz
2026-08-24 19:43:12 +02:00
Dirk Wetter 5461110ac4 store from today via git repo 2026-08-24 19:42:19 +02:00
Dirk Wetter 74bfffecae DL link for JDK, --depth=1 for Apple repo 2026-08-24 19:39:32 +02:00
Dirk WetterandGitHub 6d555cac4e Merge pull request #3118 from testssl/dependabot/github_actions/shogo82148/actions-setup-perl-1.43.1
Bump shogo82148/actions-setup-perl from 1.42.0 to 1.43.1
2026-08-24 10:52:03 +02:00
Dirk WetterandGitHub 5894d76a63 Merge pull request #3119 from testssl/dependabot/github_actions/docker/login-action-4.6.0
Bump docker/login-action from 4.5.2 to 4.6.0
2026-08-24 10:50:22 +02:00
Dirk WetterandGitHub ff51c14b52 Merge pull request #3123 from dcooper16/cleanup3120
Cleanup #3120
2026-08-24 10:49:22 +02:00
David Cooper ac7294182b Cleanup #3120
This commit cleans up PR #3120. It replaces two long "if" statements with "case" statements and it removes a second declaration of "nr_cert_types" in run_server_defaults().
2026-08-22 13:30:20 -07:00
Dirk WetterandGitHub 1283aff3d4 Merge pull request #3120 from dcooper16/slhdsa
Support SLH-DSA server keys
2026-08-15 16:27:02 +02:00
David b662a0f746 Support SLH-DSA server keys
This commit adds support for server certificates that have SLH-DSA public keys. The code points come from https://datatracker.ietf.org/doc/draft-reddy-tls-slhdsa/. These code points were added to OpenSSL 4.1.0-dev by https://github.com/openssl/openssl/pull/31248.
2026-08-14 15:31:33 -07:00
dependabot[bot]andGitHub 876c7f5c77 Bump docker/login-action from 4.5.2 to 4.6.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.5.2 to 4.6.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v4.5.2...v4.6.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-12 00:23:07 +00:00
dependabot[bot]andGitHub 6653ba7724 Bump shogo82148/actions-setup-perl from 1.42.0 to 1.43.1
---
updated-dependencies:
- dependency-name: shogo82148/actions-setup-perl
  dependency-version: 1.43.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-12 00:23:00 +00:00
Dirk WetterandGitHub 06adbdccc5 Merge pull request #3115 from testssl/dependabot/github_actions/shogo82148/actions-setup-perl-1.42.0
Bump shogo82148/actions-setup-perl from 1 to 1.42.0
2026-08-11 19:20:11 +02:00
Dirk WetterandGitHub e60c4b428f Merge pull request #3114 from testssl/dependabot/github_actions/docker/login-action-4.5.2
Bump docker/login-action from 4 to 4.5.2
2026-08-11 19:18:01 +02:00
Dirk WetterandGitHub b578b00440 Merge pull request #3117 from dcooper16/fixtypo
Fix typo
2026-08-11 19:13:38 +02:00
David CooperandGitHub 97e6258c85 Fix typo
It appears that #3084 accidentally introduced a typo in determine_service(). This commit undoes the change.
2026-08-10 15:44:45 -07:00
dependabot[bot]andGitHub 323141f2ba Bump shogo82148/actions-setup-perl from 1 to 1.42.0
---
updated-dependencies:
- dependency-name: shogo82148/actions-setup-perl
  dependency-version: 1.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-04 00:22:39 +00:00
dependabot[bot]andGitHub 2de44302c3 Bump docker/login-action from 4 to 4.5.2
Bumps [docker/login-action](https://github.com/docker/login-action) from 4 to 4.5.2.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v4...v4.5.2)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.5.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-31 00:22:33 +00:00
Dirk WetterandGitHub 5296954a70 Merge pull request #3108 from testssl/fix_3107_fname-warning
Remove warning message when supplying a fname
2026-07-16 14:00:04 +02:00
Dirk WetterandGitHub 18e6938b62 Merge pull request #3110 from petecooper/3.3dev
Remove broken link to privacyscore.org in `3.3dev`
2026-07-16 13:57:43 +02:00
Pete Cooper 6fdfbc1800 remove broken link to privacyscore.org
ping https://github.com/testssl/testssl.sh/issues/3109
2026-07-16 12:37:27 +01:00
Dirk Wetter 498a0dff33 Remove warning message when supplying a fname
In order ot waran early in file outputs 75376d3 introduced a separate function for checking early
the command line.

As massing scanning option was not considered one got a warning, saying

   Warning: Target is not a server name: results may be completely wrong, at minimum trust may show false results.

This fixes that, see #3107 .
2026-07-16 11:25:30 +02:00
Dirk WetterandGitHub 2b6180320c Merge pull request #3104 from ericcgu/feat/3097-short-lived-certs
Improve handling of short-lived certificates (#3097)
2026-07-15 17:13:21 +02:00
Eric Gu 500313dab1 Auto-generate docs from testssl.1.md 2026-07-15 07:45:21 -04:00
Dirk WetterandGitHub cf45a76b5f Merge pull request #3103 from ericcgu/fix/1246-mass-testing-scantime
Fix bogus "Scan interrupted" scanTime in mass-testing JSON (#1246)
2026-07-15 13:01:47 +02:00
Eric Gu 26a75cf764 Improve handling of short-lived certificates (#3097)
Certificates with a short validity period (e.g. Let's Encrypt's 6-day
"shortlived" profile, now GA) always tripped the days2warn expiry
thresholds and were shown in red on the "Certificate Validity (UTC)"
line, even seconds after issuance. That red is misleading for a cert
that is intentionally short-lived.

Detect short-lived certificates by their validity period (notAfter -
notBefore) using a new DAYS_VALID_SHORTLIVED threshold (default 10 days,
per the CA/Browser Forum BR 1.6.1 "Short-lived Subscriber Certificate"
definition, which also covers the LE 6-day profile). For such certs:

  - show them as good (not red) with a "short-lived cert (N days)" remark
    so the short lifespan reads as intended rather than as an error, and
  - warn (HIGH) only when less than 24h of validity is left, and only for
    certificates whose total lifetime exceeds 24h (a cert whose whole
    life is under 24h stays good until it expires rather than being
    flagged the entire time).

Regular certificates are unaffected and keep the existing days2warn
behaviour. The threshold is overridable via the DAYS_VALID_SHORTLIVED
env var (documented in doc/testssl.1.md next to DAYS2WARN1/2) and added
to CHANGELOG.md.

Verified end-to-end with local openssl s_server: 5-day fresh (green),
5-day with <24h left (red, "expires < 24h"), 12h fresh (green), 12h
nearly expired (green), and 90-day (unchanged ">= days").
2026-07-14 21:49:03 -04:00
Eric Gu 0124fd6103 Fix bogus "Scan interrupted" scanTime in mass-testing JSON (#1246)
In mass-testing mode main() runs run_mass_testing()/run_mass_testing_parallel()
and exits without ever calling lets_roll() for the scan itself, so
calc_scantime() never runs and SCAN_TIME stays 0. fileout_json_footer(),
invoked from cleanup() on exit, treats SCAN_TIME==0 as an interrupted scan
and writes "scanTime": "Scan interrupted" for the whole batch.

START_TIME is already set by the earlier "lets_roll init" call, so compute
the overall scan time with calc_scantime() before exiting the mass-testing
path. The aggregate footer now reports the real elapsed time as an INFO
finding instead of a spurious WARN.
2026-07-14 21:04:49 -04:00
Dirk WetterandGitHub 2f37eb069c Merge pull request #3099 from testssl/patch-1
streamlined
2026-07-14 20:38:37 +02:00
Dirk WetterandGitHub 7957d0b81c streamlined
- Comments instead of backticks
- AI section
- version not from GH
2026-07-14 20:37:27 +02:00
Dirk WetterandGitHub ffbc439897 fix yet another typo 2026-07-14 20:04:52 +02:00
Dirk WetterandGitHub 7956a222c1 Merge pull request #3098 from testssl/drwetter-patch-1
Create SECURITY.md
2026-07-14 19:58:21 +02:00
Dirk WetterandGitHub 4e3fdab08e Update Readme.md 2026-07-14 19:56:35 +02:00
Dirk WetterandGitHub 1e80984577 Update SECURITY.md 2026-07-14 19:52:06 +02:00
Dirk WetterandGitHub 0bd118e657 Fix typo in comment, add improvement for LLM 2026-07-14 19:48:10 +02:00
Dirk WetterandGitHub 6c4e0f257f Create SECURITY.md 2026-07-14 19:29:14 +02:00
Dirk WetterandGitHub 580bffeb0f Merge pull request #3096 from ericcgu/fix/3095-ipv6-proxy-bad-substitution
Fix broken OpenSSL version check for IPv6 proxy in check_proxy() (#3095)
2026-07-14 18:21:29 +02:00
Eric Gu 2940c9503e Fix broken OpenSSL version check for IPv6 proxy in check_proxy() (#3095)
check_proxy() gated IPv6 proxy support on a home-grown version check
${OSSL_VER_MAJOR$}${OSSL_VER_MINOR} -ge 11 at two places, which had a
stray "$" causing a "bad substitution" error. On non-LibreSSL builds
this aborted the rest of check_proxy() for any IPv6 proxy (literal
[addr]:port, or a hostname resolving only to AAAA), so PROXY was never
rebuilt into a valid "-proxy ..." argument and downstream openssl calls
failed with an error mentioning neither IPv6 nor the proxy.

Beyond the typo, the concatenation approach was itself unsound:
OSSL_VER_MINOR carries the patch component (e.g. "1.1" for OpenSSL
1.1.1), so ${OSSL_VER_MAJOR}${OSSL_VER_MINOR} yields "11.1" and
[[ 11.1 -ge 11 ]] is an arithmetic error. Replace both checks with the
dotted-glob idiom used everywhere else in the file for OpenSSL >= 1.1
gates (e.g. testssl.sh:21441, :8216), which is robust and greppable.
2026-07-12 17:10:45 -04:00
Dirk WetterandGitHub 611b1b1f39 Merge pull request #3091 from ericcgu/fix/3090-html-xss-pr-url
Fix stored XSS in HTML report via unescaped Location: header (#3090)
2026-07-12 14:43:29 +02:00
Eric Gu aad4894f77 Fix stored XSS in HTML report via unescaped Location: header (#3090)
pr_url() and pr_boldurl() interpolated their argument directly into
<a href="$1">$1</a> without HTML escaping. The most notable caller
passes the raw HTTP Location: header from the scanned server, so a
malicious HTTPS target could inject arbitrary HTML/JS into an
operator's --htmlfile report. Route both the href attribute and the
link text through the existing html_reserved() escaper, matching the
pattern already used by every other pr_* HTML-output function.
2026-07-11 22:53:36 -04:00
Dirk WetterandGitHub 21bf1ff19f Merge pull request #3089 from testssl/03_mini_syntax_check
Small check for semantic unit tests
2026-07-11 22:47:16 +02:00