As I understand the process of verifying a remote computer's SSL certificate, the remote system sends its 'leaf' certificate and any intermediate certificates, but not the root certificate. Executing this openssl
command shows that the root certificate is not sent by the remote server:
openssl s_client -showcerts -connect www.stackoverflow.com:443
It is then the responsibility of the client to check that the leaf certificate was indeed signed by the first intermediate certificate, that the first intermediate was signed by the second and so on. Ultimately, the signature on the last certificate provided by the remote system is checked to verify that it was signed by a root certificate that was already trusted - i.e., already in the 'trust store'.
So here's the question: why would you, as the client, ever want to store an intermediate certificate? The Windows certificate store has an area designated for storing "Intermediate Certification Authorities". What is it for? Is there ever a case where storing intermediate certificates is needed?