The public internet uses One-way TLS.
TLS, which was formerly called SSL, serves three purposes:
- To ensure that people visit a trusted website
- To encrypt communications between client and server so that external parties cannot spy on the communications
- To make sure that data is not altered in transit.
The server encrypts all traffic with its private key. The client decrypts all traffic with the public key. Anyone can view the public key, the certificate authority (who issued the certificate) and the expiration date. Note that distributing billions of TLS certificates (X.509) to all clients on the public internet is an impossible task. That’s the reason that the client simply trusts all certificates that are issued by a limited number of certificate authorities (making use of the certificate chain). The public key of the server certificate doesn’t need to be distributed with TLS.
The typical TLS process works like this:
- Client connects to server
- Server presents its TLS certificate
- Client verifies the server’s certificate
- Client and server exchange information over encrypted TLS connection
On a smaller scale, in business-to-business scenarios, mutual TLS (or mTLS) is highly useful. TLS ensures that the parties at each end of a network connection are who they claim to be. It ensures traffic is secure and trusted in both directions between a client and server. mTLS is often used in a Zero Trust security framework.
mTLS works like this:
- Client connects to server
- Server presents its TLS certificate
- Client verifies the server’s certificate
- Client presents its TLS certificate *
- Server verifies the client’s certificate *
- Server grants access *
- Client and server exchange information over encrypted TLS connection
The organization implementing mTLS acts as its own certificate authority. This contrasts with standard TLS, in which the certificate authority is an external organization that checks if the certificate owner legitimately owns the associated domain. To be it’s own certificate authority, a self-signed root certificate is necessary. Self-signed means the organization creates the certificate themselves. The certificates used by authorized clients and servers have to correspond to the organization’s root certificate.