Client Certificate (TLS client authentication certificate)
Definition
Client certificates are X.509 certificates that a TLS client presents during the handshake to prove its identity to the server.
A client certificate authenticates the connecting party rather than the server. When a server is configured to request one, it sends a CertificateRequest message in the TLS handshake; the client answers with its certificate and proves possession of the matching private key by signing the handshake transcript. The certificate normally carries the clientAuth extended key usage (1.3.6.1.5.5.7.3.2). Typical holders are devices, services, API consumers and employees' browsers or smart cards.
Why it matters
Client certificates enable strong, phishing-resistant authentication without passwords, and they are the basis of mutual TLS. They are usually issued by a private CA that only the relying servers trust. Public TLS CAs are moving away from client authentication: Let's Encrypt's classic profile stopped including the clientAuth EKU on 2026-02-11, and Chrome's root program requires subscriber certificates issued on or after 2027-03-15 to assert only serverAuth. Systems that used public server certificates as client certificates need to migrate to a dedicated hierarchy.
Example
curl --cert client.crt --key client.key https://api.example.com/v1/status
openssl x509 -in client.crt -noout -ext extendedKeyUsage
# X509v3 Extended Key Usage:
# TLS Web Client Authentication
Common misconceptions
- Any certificate works as a client certificate. Servers and libraries check for the clientAuth EKU, and public TLS certificates are losing it.
- Client certificates encrypt the traffic. Encryption uses session keys from the key exchange; the client certificate only proves identity.
- Trusting a public CA for client auth is fine. That would accept anyone who can get a certificate from that CA; use a dedicated private CA and check the expected subject.