# What Is Client Certificate? Definition and Examples

> Client certificates are X.509 certificates that a TLS client presents during the handshake to prove its identity to the server.

Source: https://ssl.sh/glossary/client-certificate/
Last updated: 2026-11-10

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](https://ssl.sh/glossary/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](https://ssl.sh/glossary/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](https://ssl.sh/glossary/mtls/). They are usually issued by a [private CA](https://ssl.sh/glossary/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
```bash
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.

## Related terms

- [mTLS](https://ssl.sh/zh/glossary/mtls/): mTLS 是服务器和客户端在握手中都用 X.509 证书向对方证明身份的 TLS，也叫双向 TLS 认证。
- [EKU](https://ssl.sh/zh/glossary/extended-key-usage/): EKU 即扩展密钥用途，是列出证书可用于哪些目的（如 serverAuth 服务器认证、clientAuth 客户端认证、代码签名）的 X.509 扩展。
- [私有 CA](https://ssl.sh/zh/glossary/private-ca/): 私有 CA 是企业为自己的系统和设备搭建的证书颁发机构，其根证书只在企业主动安装的设备上受信任。
- [TLS 握手](https://ssl.sh/zh/glossary/tls-handshake/): TLS 握手是 TLS 连接开始时的一组消息交换，客户端与服务器在其中协商协议版本和密码套件、验证服务器身份并派生会话密钥。
- [X.509](https://ssl.sh/zh/glossary/x509/): X.509 是 ITU-T 制定的公钥证书标准格式，其互联网配置规范 RFC 5280 规定了 TLS 所用证书的结构和验证方法。
- [PKCS#12](https://ssl.sh/zh/glossary/pkcs12/): PKCS#12 是一种用口令保护的二进制容器格式，可以把私钥、证书和证书链打包进一个文件，扩展名通常是 .p12 或 .pfx。
- [S/MIME](https://ssl.sh/zh/glossary/smime/): S/MIME 是一种使用 X.509 证书和 CMS 格式对电子邮件进行端到端签名和加密的标准。
