Skip to content

feat(tls): add a client certificate verifier hook for TLS servers - #26835

Draft
guilload wants to merge 1 commit into
masterfrom
guilload/tls-client-cert-verifier
Draft

guilload wants to merge 1 commit into
masterfrom
guilload/tls-client-cert-verifier

Conversation

@guilload

Copy link
Copy Markdown
Contributor

Summary

I'm still working on polishing this PR, but I'm opening it as a draft for visibility.

Chain validation against ca_file only proves a client holds some certificate issued by that CA. Add ClientCertVerifier and TlsSettings::with_client_cert_verifier so servers can restrict which of those certificates they accept. Installing a verifier requires a client certificate and a CA file, and disables session resumption.

TlsAcceptorReloader keeps the verifier across reloads, and bind_reloadable errors when given a reloader while TLS is disabled. Rejected client certificates now surface OpenSSL's verify result as TlsError::PeerCertificateRejected.

Also fix session resumption on servers that request client certificates, and let the http_server source serve a reloadable acceptor.

Vector configuration

TODO

How did you test this PR?

TODO

Does this PR include user facing changes?

  • No. A maintainer will apply the no-changelog label to this PR.

Chain validation against `ca_file` only proves a client holds some
certificate issued by that CA. Add `ClientCertVerifier` and
`TlsSettings::with_client_cert_verifier` so servers can restrict which
of those certificates they accept. Installing a verifier requires a
client certificate and a CA file, and disables session resumption.

`TlsAcceptorReloader` keeps the verifier across reloads, and
`bind_reloadable` errors when given a reloader while TLS is disabled.
Rejected client certificates now surface OpenSSL's verify result as
`TlsError::PeerCertificateRejected`.

Also fix session resumption on servers that request client
certificates, and let the `http_server` source serve a reloadable
acceptor.
@github-actions github-actions Bot added domain:sources Anything related to Vector's sources domain:core Anything related to core crates i.e. vector-core, core-common, etc labels Oct 23, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

domain:core Anything related to core crates i.e. vector-core, core-common, etc domain:sources Anything related to Vector's sources

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant