What is mutual TLS (mTLS)?

Mutual TLS (mTLS) is a type of authentication in which the two parties in a connection authenticate each other using the TLS protocol.

Learning Objectives

After reading this article you will be able to:

  • Explain how mutual TLS (mTLS) works
  • Understand the difference between mutual TLS and regular TLS
  • Illustrate how mTLS stops attacks

What is mutual TLS (mTLS)?

Mutual TLS, or mTLS for short, is a method for mutual authentication. mTLS ensures that the parties at each end of a network connection are who they claim to be by verifying that they both have the correct private key. The information within their respective TLS certificates provides additional verification.

mTLS is often used in a Zero Trust security framework to verify users, devices, and servers within an organization. It can also help keep APIs secure.

What is TLS?

Transport Layer Security (TLS) is an encryption protocol in wide use on the Internet. TLS, which was formerly called SSL, authenticates the server in a client-server connection and encrypts communications between client and server so that external parties cannot spy on the communications.

There are three important things to understand about how TLS works:

1. Public key and private key

TLS works using a technique called public key cryptography, which relies on a pair of keys — a public key and a private key. Anything encrypted with the public key can be decrypted only with the private key.

2. TLS certificate

A TLS certificate is a data file that contains important information for verifying a server's or device's identity, including the public key, a statement of who issued the certificate (TLS certificates are issued by a certificate authority), and the certificate's expiration date.

3. TLS handshake

The TLS handshake is the process for verifying the TLS certificate and the server's possession of the private key. The TLS handshake also establishes how encryption will take place once the handshake is finished.

How does mTLS work?

Normally in TLS, the server has a TLS certificate and a public/private key pair, while the client does not. The typical TLS process works like this:

  1. Client connects to server
  2. Server presents its TLS certificate
  3. Client verifies the server's certificate
  4. Client and server exchange information over encrypted TLS connection

In mTLS, however, both the client and server have a certificate, and both sides authenticate using their public/private key pair. Compared to regular TLS, there are additional steps in mTLS to verify both parties (additional steps in bold):

  1. Client connects to server
  2. Server presents its TLS certificate
  3. Client verifies the server's certificate
  4. Client presents its TLS certificate
  5. Server verifies the client's certificate
  6. Server grants access
  7. Client and server exchange information over encrypted TLS connection

Certificate authorities in mTLS

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.

Why use mTLS?

mTLS helps ensure that traffic is secure and trusted in both directions between a client and server. This provides an additional layer of security for users who log in to an organization's network or applications. It also verifies connections with client devices that do not follow a login process, such as Internet of Things ( IoT) devices.

mTLS prevents various kinds of attacks, including:

  • On-path attacks: On-path attackers place themselves between a client and a server and intercept or modify communications between the two.
  • Spoofing attacks: Attackers can attempt to "spoof" (imitate) a web server to a user, or vice versa.
  • Credential stuffing: Attackers use leaked sets of credentials from a data breach to try to log in as a legitimate user.
  • Brute force attacks: A brute force attack is when an attacker uses rapid trial and error to guess a user's password.
  • Phishing attacks: The goal of a phishing attack is often to steal user credentials.
  • Malicious API requests: When used for API security, mTLS ensures that API requests come from legitimate, authenticated users only.

How does Cloudflare use mTLS?

Cloudflare Zero Trust uses mTLS for Zero Trust security. Cloudflare API Shield also uses mTLS to verify API endpoints, ensuring that no unauthorized parties can send potentially malicious API requests.