Browser errors

ERR_BAD_SSL_CLIENT_AUTH_CERT: client certificate rejected

By · Last verified

Error messageERR_BAD_SSL_CLIENT_AUTH_CERT

ERR_BAD_SSL_CLIENT_AUTH_CERT means the website requires you to prove your identity with a client certificate, and the certificate Chrome offered was not accepted (or none was offered). This happens on sites using mutual TLS (mTLS): company portals, government systems, some banking and API endpoints.

Is it the site or your device?

Usually it is the certificate on your device, or your account's entitlement to the site. First confirm the server's own certificate is fine with the SSL checker (curl ssl.sh/example.com), then see which client CAs the server asks for:

openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
  | sed -n '/Acceptable client certificate CA names/,/Requested Signature/p'

If the server lists acceptable client CAs and your certificate is not from one of them, you have the wrong certificate. If the server lists none, or the error started for every user at once, the server's configuration changed.

Causes

1. No client certificate available

The certificate lives on a smart card or USB token that is not plugged in, its middleware is not running, or it was never installed on this computer or browser profile.

2. Expired or revoked client certificate

Client certificates expire like server certificates. Check the validity in your operating system's certificate manager (Windows certmgr.msc > Personal; macOS Keychain Access > My Certificates).

3. Wrong certificate selected

With several personal certificates installed, Chrome may have picked or remembered the wrong one. Restart the browser and choose again.

4. Server trusts a different client CA

The server's trusted client CA file (ssl_client_certificate in Nginx) does not include the CA that issued your certificate, often after a CA rotation. Test from the command line:

curl -v --cert client.pem --key client.key https://example.com/ -o /dev/null

5. Missing clientAuth EKU or wrong key usage

A certificate without clientAuth in its extended key usage is rejected by servers that check it. Decode it with the certificate decoder.

What it looks like in each browser

Browser What you see
Chrome / Edge "This site can't provide a secure connection" with "example.com didn't accept your login certificate, or one may not have been provided. ERR_BAD_SSL_CLIENT_AUTH_CERT"
Firefox "Secure Connection Failed" with SSL_ERROR_BAD_CERT_ALERT or SSL_ERROR_HANDSHAKE_FAILURE_ALERT
Safari "Safari can't open the page" or a certificate selection prompt
curl alert bad certificate or alert certificate required (TLS 1.3 alert 116)

How site owners fix it

Trusting the correct client CA, and issuing client certificates with the clientAuth EKU, fixes most server-side cases.

1. Point the server at the right client CA bundle.

ssl_client_certificate /etc/nginx/ssl/client-ca.pem;
ssl_verify_client on;
ssl_verify_depth 2;

2. Use a dedicated client CA whose certificates include extendedKeyUsage=clientAuth; do not rely on public server certificates for client authentication.

3. Give users a clear path. Log $ssl_client_verify and $ssl_client_s_dn in Nginx so support can see why a handshake failed, and consider ssl_verify_client optional with an application-level error page instead of a bare TLS failure.

4. Check the public side with curl ssl.sh/example.com after changes. Background: mTLS.

FAQ

Chrome remembered the wrong certificate. How do I choose again?

Chrome remembers your choice for the session. Close all Chrome windows (or restart the browser) and reload; the certificate picker appears again. On managed computers, the AutoSelectCertificateForUrls policy may be choosing for you.

I never installed a client certificate. Why does the site want one?

The site, or part of it, is set up for certificate-based login, typical for company portals, government services and APIs. Ask the site's administrator how to obtain one; you cannot create a valid one yourself.

Can I use my website's TLS certificate as a client certificate?

Increasingly, no. Public CAs are removing the clientAuth extended key usage from server certificates, so they will be rejected by servers that check EKU. Use certificates from a dedicated client CA. See client authentication EKU removal.

Sources

  1. Chromium net_error_list.h
  2. RFC 8446 section 4.3.2: Certificate Request
  3. nginx ngx_http_ssl_module: ssl_verify_client
  4. RFC 5280 section 4.2.1.12: Extended Key Usage