0

I have read many posts related to the intermediate CA certificates and I do hope my question is not a duplication.

Where do TLS clients fetch intermediate CA certificates from?

In SSL server handshake, does server also send CA certificate

How does SSL/TLS work?

If I implement a TLS client via code, how should it validate intermediate CA certificates? According to my understanding, there are 2 options:

  1. Import (manually) all intermediate CA certificates into a trust store of the TLS client. This should be once (and not per each TLS connection). Of course, it will be required to import CA certificates each time these certificates are renewed.

  2. Implement Authority Information Access extension (similar as browsers implement it).

Are my options correct? Do I have any other options?

3
  • 1
    The intermediate CA certs are normally sent by the TLS peer and are automatically handled by your (decent) TLS library.
    – ysdx
    Jul 6, 2023 at 14:21
  • What do these (decent) TLS libraries do? Implement Authority Information Access extension?
    – Michael
    Jul 6, 2023 at 14:29
  • 1
    To validate an intermediate certificate, the client should verify that it is signed by a root certificate that the client trusts. Note that there could be many intermediate certificates between the leaf certificate and the root certificate in this chain - what's important is that each certificate is signed by another certificate in the chain, and that the chain ultimately terminates with a root certificate that the client trusts.
    – mti2935
    Jul 6, 2023 at 14:56

1 Answer 1

2

Verifying the trust chain is an essential part of the certificate validation, the one which involves the intermediate certificates. It means to build the trust path from the peers leaf certificate to a locally trusted root CA using the intermediate certificates.

TLS libraries like OpenSSL usually expect the server to send the intermediate certificates required for validation within the TLS handshake. Since only the root CA are usually contained in the local trust store, the validation will fail when required intermediate certificates are not sent by the server. A work around in this case might be to explicitly download the missing intermediate certificates from some trusted source and add them also to the trust store - but this is not the expected behavior from a client.

Browsers work around broken certificate chains with AIA (Chrome) or caching of previously seen intermediates (Firefox). That's why browsers often succeed even with improperly setup servers and server administrators don't notice the broken setup if they check only with a browser.

2
  • What does it mean "to verify the trust chain"? Ensure that each certificate in the chain is located in the trust store?
    – Michael
    Jul 6, 2023 at 15:07
  • 1
    @Michael: hope it is more clear now with the updated answer. Jul 6, 2023 at 15:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .