Commit graph

16 commits

Author SHA1 Message Date
03af5615ae checker: implement ShareKey to mutualise TLS probes across targets
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
v0.8.0
A TLS probe result depends only on the set of endpoints actually dialed and
the probe knobs, never on which domain or service published them: the
observation is a map keyed by each endpoint's contract Ref
(host|port|effective SNI|STARTTLS|require). Implement sdk.ObservationSharer so
the host dials a host:port once and serves every target that resolves to the
same endpoint set, instead of re-handshaking per record. This is the
highest-value case among the checkers, since dane, xmpp, srv, dav, … all
funnel their endpoints into this single checker.

The share key sorts the endpoint Refs and folds in the probe timeout and the
cipher-enumeration flag, since both change what is collected (a tighter
timeout can fail a slow handshake; enumeration adds the Enum block). An empty
or unparseable entry set yields "" so the host falls back to per-target
caching.
2026-06-18 15:27:54 +09:00
7c2f4bfbb5 Add CI/CD pipeline
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
v0.7.0
2026-05-10 19:32:13 +08:00
e4d1bc36a7 Update rules section 2026-04-30 08:36:38 +07:00
a9f37c79cf Add tlsenum package and add version/cipher enumeration into the checker
tlsenum package probes a remote endpoint with one ClientHello
per (version, cipher) pair via utls, so the checker can report the
exact set the server accepts rather than only the suite Go's stdlib
happens to negotiate. Probe accepts an Upgrader callback so STARTTLS
dialects plug in without tlsenum learning about them; the checker
bridges its existing dialect registry through upgraderFor.
2026-04-29 13:35:29 +07:00
8a7f9feaf7 Document usage of FetchChain, BuildChain, AutoSTARTTLS, and CertInfo 2026-04-29 13:33:27 +07:00
fa212f0fae Harden contract validation, STARTTLS edge cases, and rule output 2026-04-26 19:55:44 +07:00
a925e4f162 docker: add HEALTHCHECK probing /health
The binary doubles as its own healthcheck client via the SDK's
-healthcheck flag, so the probe works in the scratch image
(no shell, no curl, no wget).
2026-04-26 16:37:20 +07:00
ad32e1c757 Run container as non-root user
Add USER 65534:65534 to the scratch runtime image so the checker
process does not run as root.
2026-04-26 16:37:18 +07:00
c99c13a7e0 fix: Implement CheckerDefinitionProvider on tlsProvider v0.6.2
Lets the SDK seed OptionEndpoints from the primary's DiscoverEntries
output when checker-tls runs as a sibling.
2026-04-26 00:36:44 +07:00
e32633ca40 Harden STARTTLS handlers and add per-dialect tests v0.6.0
Bound line reads with readLineLimited to prevent a peer from exhausting
memory by withholding line terminators, wrap previously bare error
returns for consistent context, surface XML decoder Skip errors, and
replace the goto in the XMPP feature scan with a labeled break. New
starttls_test.go exercises SMTP/IMAP/POP3/XMPP/LDAP success and
not-advertised paths through net.Pipe-mocked servers.
2026-04-25 23:15:17 +07:00
4177fcdc7b Split monolithic rule into per-test rules, collect gathers facts only 2026-04-25 23:14:42 +07:00
5b71e85f49 Bump SDK to 1.4.0 v0.5.0 2026-04-24 17:43:36 +07:00
79782a49c4 Migrate to checker-sdk-go v1.3.0 with standalone build tag
The SDK split the HTTP server scaffolding into the new
checker-sdk-go/checker/server subpackage. Update main.go to import
server and call server.New, and isolate the interactive form code
behind the standalone build tag so plugin/builtin builds skip
net/http entirely.
2026-04-24 14:04:55 +07:00
9c54f5b0fb Expose FetchChain and BuildChain helpers for external callers v0.4.0 2026-04-24 12:18:44 +07:00
17ecf3beb5 Publish certificate chain data for DANE consumers
Add Chain []CertInfo to TLSProbe, carrying per-cert DER and precomputed
TLSA hashes (Cert/SPKI, SHA-256/SHA-512) plus the raw SPKI DER. This
lets downstream checkers (checker-dane) perform TLSA matching against
the observed chain without re-running a TLS handshake.
2026-04-24 12:14:58 +07:00
ccc5b0cd98 Initial commit 2026-04-24 12:13:57 +07:00