3 ms·
>One issue is that there’s no “one true list of intermediates” for a server to include in the handshake The one true list of intermediates is "the intermediate
by NovemberWhiskey 4y ago
>One issue is that there’s no “one true list of intermediates” for a server to include in the handshake
The one true list of intermediates is "the intermediates between the leaf certificate and the root".
Cross-signing is a corner case.
Technically, TLS 1.2 cannot support cross-signing due to the requirement that each certificate in the chain certify the immediately preceding one (which is obviously not possible with cross-signing, because the cross-signing intermediates break the chain into two paths).
Practically speaking, it works anyway (and TLS 1.3 fixes the problem with the specification) and you should send any intermediates you have and expect the client to construct a chain to a root that it trusts.
It's absolutely not that hard, but my experience is there's a lot of cargo cult engineering around TLS configuration, as well as a degree of deploying-it-until-it-works-for-me.
My personal low was experiencing issues with a server that, upon investigations, was sending 22 certificates including all of the current- and next-generation CAs roots for our internal PKI as well as all of the issuing and intermediate CAs. The TLS handshake was about 200KB on the wire and would fail for some implementations that gave up trying to put together a trusted path.