summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls13_server.c
diff options
context:
space:
mode:
authorjsing <>2021-01-05 16:45:59 +0000
committerjsing <>2021-01-05 16:45:59 +0000
commit5a99a6d93c526163537379fd7c0acc6d25ec445a (patch)
tree5a414cc80415ce1baabbba3babc15cc0a7244cee /src/lib/libssl/tls13_server.c
parentc2affb92204dca1446bbdf5b7404fda1dc41e2c2 (diff)
downloadopenbsd-5a99a6d93c526163537379fd7c0acc6d25ec445a.tar.gz
openbsd-5a99a6d93c526163537379fd7c0acc6d25ec445a.tar.bz2
openbsd-5a99a6d93c526163537379fd7c0acc6d25ec445a.zip
Gracefully handle root certificates being both trusted and untrusted.
When a certificate (namely a root) is specified as both a trusted and untrusted certificate, the new verifier will find multiple chains - the first being back to the trusted root certificate and a second via the root that is untrusted, followed by the trusted root certificate. This situation can be triggered by a server that (unnecessarily) includes the root certificate in its certificate list. While this validates correctly (using the first chain), it means that we encounter a failure while building the second chain due to the root certificate already being in the chain. When this occurs we call the verify callback indicating a bad certificate. Some sensitive software (including bacula and icinga), treat this single bad chain callback as terminal, even though we successfully verify the certificate. Avoid this problem by simply dumping the chain if we encounter a situation where the certificate is already in the chain and also a trusted root - we'll have already picked up the trusted root as a shorter path. Issue with icinga2 initially reported by Theodore Wynnychenko. Fix tested by sthen@ for both bacula and icinga2. ok tb@
Diffstat (limited to 'src/lib/libssl/tls13_server.c')
0 files changed, 0 insertions, 0 deletions