X.509 for Internet Communications
SSL/TLS Handshake
During SSL/TLS connections, the server authenticates according to the handshake and record protocols. When initiating the handshake protocol, the server presents a signed X.509 certificate to the client. Only the server needs to be validated in most secure browsing sessions. Client authentication is less common but would require the server to verify the client’s certificate as well.
The X.509 certificate’s signature must be verified by the client before establishing an HTTPS connection. The required format and information contained in an X.509 certificate enable the client to confidently authenticate and verify the integrity of the certified identity.
Trust Stores
Client browsers and applications rely heavily on their trust in Certificate Authorities(CA) for proper validation of X.509 certificates. Every client application and Operating System (OS) maintains a list of trusted Root CA Certificates, this list is called a “Trust Store.” For example, at the current time of writing, the Firefox trust store holds 150 root certificates that are automatically trusted by their web browser.
In contrast, Google Chrome uses the underlying OS’s trust store to determine whether a certificate is trusted, with a few exceptions. Google maintains a hard-coded list of “EV-Qualified” root certificates, along with a unique ID that must appear on certificates issued from that root. Note: Since 2015, Chrome requires all EV certificates to use Certificate Transparency.
Hierarchical Trust Chains
As part of the X.509 verification process, each certificate must be signed by the same issuer CA named in its certificate. The client must be able to follow a hierarchical path of certification that recursively links back to at least one root CA listed in the client’s trust store.
However, the certification path structure can be hierarchical (like a tree with a single source root CA) or non-hierarchical (like a forest with many cross-certified root CAs). It’s easier to understand cross certification by imagining international telephone calls. If each country code is represented by a root CA, then cross-certification agreements among the CA would extend the calling reach. When two roots CA sign each other’s certificates, they inherently trust all other certificates in each other’s paths.