Reputation: 1224
I am asking this question because I think when we try to access some https enabled websites (e.g. gmail, facebook,our online banking), we do not download or install a client certificate.
Then how can we be sure that the information sent from our machines are properly encrypted?
Thanks.
Upvotes: 0
Views: 72
Reputation: 14752
None of the examples you've listed utilize client certificates, except perhaps your online banking.
A client certificate is something you, as the client, send to the server in order to authenticate yourself. This is also known as "two-way TLS" or "mutual TLS" authentication.
VPN services are a particularly common example that utilize two-way TLS. On the web, it is usually only used for server-to-server authentication, as it is fairly hard to setup and maintain for use by actual humans (but some banks do provide it as an option).
What you actually have in mind is how do you know the server certificates for websites on the internet are valid, without manually importing them. And the answer is fairly simple - you already have them, pre-installed ... kinda.
Naturally, you don't actually have the certificates for every TLS-enabled website on the web (that would be impossible), but web browsers ship with a set of root CA certificates, which can verify them.
The way it works is called "chain of trust", and it goes something like this:
Technically, the intermediate CAs are optional and a leaf certificate can be directly signed by root CAs; and vice-versa - there can be more than one intermediate.
When you visit e.g. facebook.com
, it will serve its leaf certificate bundled together with the intermediate that was used to sign it; your browser verifies that the served leaf was signed by the served intermediate cert, and then (since it already has all root certs pre-installed) it also verifies that the intermediate was signed by one of the root CAs, completing the chain of trust verification.
It's a complex and fragile structure, but it somehow works and it is the best we have today.
Upvotes: 1