Assume you have a client/server pair which wants to set up a secure connection using X509 v3 certificates and asymmetric cryptography.
The client sends a chain of certificates (let's say Root CA: C1, intermediate CA: C2 and client certificate: C3) and the server has to validate the chain (and then, of course, vice versa).
Up to this morning my understanding was that the server needs to know (at least) C1 and have it in a trust store, the idea being that the root CA is the entity all participating parties are willing to trust.
After encountering examples where this is handled differently I'm now confused and have some doubts.
In one example I found the server only had C3 (or only C2) in it's trust store and was happily accepting the connection request containing the rest of the chain (actually the whole chain) from the client.
So I'd like to know whether this an approach which
- can be considered secure?
- is in accord with relevant standards?
(Of course I do understand that it is, to some extend, up to the server admin to decide which parties are trustworthy. The question aims at a developer who is supposed to implement the validation).