Skip to content

Fix server cert chain validation for HTTP/3 clients#145

Merged
benoitc merged 3 commits into
mainfrom
fix/cert-chain-validation
May 28, 2026
Merged

Fix server cert chain validation for HTTP/3 clients#145
benoitc merged 3 commits into
mainfrom
fix/cert-chain-validation

Conversation

@benoitc
Copy link
Copy Markdown
Owner

@benoitc benoitc commented May 28, 2026

The QUIC client's topmost-only anchor lookup rejected valid chains that include an extra or cross-signed cert above the cert that actually anchors. With trust stores like Mozilla NSS, certifi and FreeBSD ca_root_nss this failed against real servers (notably cloudflare.com over Google Trust Services) with unknown_ca, while Debian/macOS bundles happened to pass.

The fix walks the served chain for the highest cert whose issuer is in the trust store and validates the sub-path from there, dropping any extra certs above. The QUIC owner also gets a synchronous {closed, {certificate_invalid, _}} event on verification failure so HTTP/3 callers fail fast instead of timing out.

Ships as 1.4.5.

@benoitc benoitc merged commit 7d24fe2 into main May 28, 2026
10 checks passed
@benoitc benoitc deleted the fix/cert-chain-validation branch May 28, 2026 05:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant