Skip to content
RU

ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED: Fix Client Certificate Signing

What it means: Chrome picked your client certificate, but signing the TLS handshake with its private key failed on your device.

  1. Reinsert the smart card or token, enter PIN.
  2. Restart the browser and choose the certificate again.
  3. Reimport the certificate with its private key (.p12).
  4. Owner: allow TLS 1.2 on the mTLS host.

Test your URL now

Runs a full TLS check: handshake, protocol versions, certificate chain, trust and expiry.

Check your site's SSL →

What ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED means

The site uses client-certificate authentication (mutual TLS): during the handshake the server asks the browser to prove it holds a certificate's private key by signing handshake data. ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED is Chromium net error -141, and that signing step failed on your device. Chromium's source lists the possible causes: access to the private key was denied, the key is not valid for signing, the key relies on a cached handle that is no longer valid, or the cryptographic provider will not sign arbitrary data. Chrome shows “Access to host was denied” and “There was a problem using your login certificate.”

It is not the server rejecting your certificate. That case, an untrusted, expired or wrong certificate, is ERR_BAD_SSL_CLIENT_AUTH_CERT (“didn't accept your login certificate”). Close relatives on the client side are ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY (certificate installed without its key), ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED and ERR_SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS (the key cannot produce any signature type the server accepts).

Causes in Chrome, Edge, Firefox and Safari

BrowserWhat you seeMost common trigger
Chrome, EdgeERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED, “There was a problem using your login certificate”Smart card removed or locked, key handle went stale
FirefoxIts own NSS wording, for example “Unable to digitally sign data required to verify your certificate” (SSL_ERROR_SIGN_HASHES_FAILURE)Same, but Firefox uses its own certificate store by default
SafariA generic connection errorKeychain identity unusable or access denied
  • Smart card or USB token problems: the card was removed after the certificate was chosen, the PIN prompt was cancelled or the PIN is locked, or the middleware is outdated.
  • Stale key handle. Chromium notes that operating systems do not reliably report a removed smart card. Chrome therefore forgets the remembered certificate after a failed signature and, if it did not already prompt during that request, retries once and asks again. Seeing the error means that retry also failed.
  • Key not usable for signing. Imported without the private key, imported as non-exportable into a provider that refuses this kind of signature, or a key restricted to encryption.
  • TLS 1.3 and RSA-PSS. TLS 1.3 handshake signatures with RSA keys must use RSA-PSS. Some smart cards, TPM keys and older Windows providers only do PKCS#1 v1.5 signatures, so the same card works on a TLS 1.2 server and fails on a TLS 1.3 one.
  • Access denied by the OS: on macOS, declining the Keychain prompt that asks to let the browser sign with the key.

Behind Cloudflare, nginx or another proxy

The signature is computed on the visitor's device, so no proxy setting causes this error. The one check that applies: whichever box terminates TLS (Cloudflare with mTLS, a load balancer, nginx) sets the TLS version, and a TLS 1.3-only policy forces RSA-PSS on every client key, so keep TLS 1.2 on client-certificate hosts while legacy tokens are in use:

server {
    listen 443 ssl;
    server_name secure.example.com;
    ssl_protocols           TLSv1.2 TLSv1.3;
    ssl_client_certificate  /etc/nginx/tls/client-ca.pem;
    ssl_verify_client       on;
}

If you own the site

  1. Prove the server side works with a file-based test certificate:
    openssl s_client -connect secure.example.com:443 -servername secure.example.com \
      -cert client.pem -key client.key -brief </dev/null
    curl -sv --cert client.pem --key client.key https://secure.example.com/ -o /dev/null
    If this succeeds over both TLS 1.2 (-tls1_2) and TLS 1.3 (-tls1_3), the problem is on the users' key stores or tokens.
  2. If only hardware tokens fail under TLS 1.3, keep TLS 1.2 enabled for that hostname and plan a token refresh to models that support RSA-PSS or ECDSA.
  3. Ask an affected user for a NetLog (chrome://net-export). The SSL_PRIVATE_KEY_OP event shows the signature algorithm requested and the error returned by the key.
  4. Document the supported setup for users: which browsers, which middleware version, and how to import a .p12 with its key.

If you are a visitor

  • Smart card or token: reinsert it, unlock it with the PIN, update the vendor middleware, and do not cancel the PIN dialog.
  • Restart the browser fully and choose the certificate again when prompted.
  • Check the private key is there. Windows: certmgr.msc > Personal > Certificates; the certificate dialog should say “You have a private key that corresponds to this certificate.” macOS: Keychain Access should show a key under the certificate, and you must allow the browser when prompted. Chrome on Linux: certutil -d sql:$HOME/.pki/nssdb -L lists certificates; import with pk12util -i cert.p12 -d sql:$HOME/.pki/nssdb.
  • Reimport from the .p12/.pfx file via Settings > Privacy and security > Security > Manage certificates, so certificate and key are installed together.
  • Firefox works but Chrome fails, or the other way round: Firefox keeps its own certificate store by default, so the two browsers may be using different copies of the certificate.

Clearing the cache does not help. If a certificate from a file works but your smart card does not, contact whoever issued the card.

How to confirm the fix

openssl s_client -connect secure.example.com:443 -servername secure.example.com \
  -cert client.pem -key client.key -tls1_3 -brief </dev/null
# CONNECTION ESTABLISHED, then reload the site in Chrome with the token inserted

A successful reload without the error page, after choosing the certificate, confirms the key can sign. To check the server's protocols and certificate chain from outside, use the SSL/TLS checker.

Related errors

CertificateExpiry, issuer, domains (SAN)
ChainIntermediate and root CA validation
TLS ProtocolTLS version and cipher suite
VulnerabilitiesHeartbleed, POODLE, weak ciphers

Why teams trust us

TLS 1.3
supported
Full
CA chain check
3,158
checks in 30 days
30/14/7
days-to-expiry alerts

How it works

1

Enter domain

2

TLS chain verified

3

Expiry date & vulnerabilities

What Does the SSL Check Cover?

SSL/TLS is the encryption protocol that protects data between the browser and server. Our tool analyzes the certificate, chain of trust, TLS version, and knownvulnerabilities.

Certificate Details

Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).

Chain of Trust

Full chain verification: from leaf certificate through intermediates to root CA.

TLS Analysis

Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.

Expiry Alerts

Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.

DV vs OV vs EV Certificates

DV (Domain Validation)
  • Confirms domain ownership only
  • Issued in minutes automatically
  • Free via Let's Encrypt
  • Suitable for most websites
  • Most common certificate type
OV / EV
  • Organization (OV) or Extended Validation (EV)
  • Issued in 1-5 business days
  • Costs $50 to $500/year
  • For finance, e-commerce, government sites
  • Increases user trust

Who uses this

DevOps

SSL certificate monitoring

Security

TLS config audit

SEO

HTTPS as ranking factor

E-commerce

customer trust

Common Mistakes

Expired certificateBrowsers block sites with expired SSL. Set up auto-renewal or monitoring.
Incomplete certificate chainWithout intermediate CA, some browsers and bots cannot verify the certificate.
Mixed content on HTTPS siteHTTP resources on an HTTPS page — the browser lock icon disappears, reducing trust.
Using TLS 1.0/1.1Legacy TLS versions have known vulnerabilities. Use TLS 1.2+ or 1.3.
Domain mismatch in certificateThe certificate must cover all site domains, including www and subdomains.

Best Practices

Set up auto-renewalLet's Encrypt + certbot with cron — certificate renews automatically every 60-90 days.
Enable HSTSStrict-Transport-Security header forces browsers to always use HTTPS.
Use TLS 1.3TLS 1.3 is faster (1-RTT handshake) and safer — legacy ciphers removed.
Monitor expiration datesCreate a monitor on Enterno.io — get notified well before expiration.
Verify chain after renewalAfter certificate renewal, confirm that intermediate certificates are installed.

Get more with a free account

SSL certificate monitoring, check history and alerts 30 days before expiry.

Sign up free

Learn more

Sources

Frequently Asked Questions

Is ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED a server problem?

Usually not. The signature fails on your device, in the smart card, OS key store or provider. A server can only contribute by requiring TLS 1.3 with RSA keys that cannot sign RSA-PSS.

Why did it work yesterday and fail today?

Common reasons are a removed or locked smart card, a middleware or OS update, an expired PIN session, or the server switching to TLS 1.3.

Why does Chrome not ask me to choose a certificate again?

Chrome remembers the certificate chosen for a site. After a failed signature it forgets that choice and retries once; restarting the browser also clears it, so you get the picker again.

Works in Firefox, fails in Chrome. Why?

Firefox uses its own certificate store by default, while Chrome on Windows and macOS uses the system store and on Linux the NSS database in your home directory (~/.pki/nssdb). The two browsers may be using different copies of the certificate and key.

How do I import a .p12 certificate into Chrome?

Open Settings, Privacy and security, Security, Manage certificates, and import the .p12 or .pfx file into your personal certificates with its password, so the private key is installed with the certificate.

Try the live tool that powered this guide

Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.