
What it means: The server certificate's keyUsage extension does not permit the key exchange this TLS handshake negotiated.
Free online tool — SSL certificate checker: instant results, no signup.
Runs a full TLS check: handshake, protocol versions, certificate chain, trust and expiry.
ERR_SSL_KEY_USAGE_INCOMPATIBLE is Chromium net error -181. The Chromium source describes it as: "The server's certificate has a keyUsage extension incompatible with the negotiated TLS key exchange method." The failure happens inside the TLS handshake, after the browser has received the certificate. The X.509 keyUsage extension lists what the key may do, and the handshake needs one specific bit:
digitalSignature when the server signs the handshake: every TLS 1.3 connection and every TLS 1.2 ECDHE_RSA or ECDHE_ECDSA cipher suite.keyEncipherment for the legacy TLS 1.2 RSA key exchange (TLS_RSA_WITH_* suites), where the client encrypts the premaster secret with the server key.It is not a trust error: the chain can be valid, unexpired and issued for the right name. It is also not about extendedKeyUsage (serverAuth), which is a separate check. A certificate with no keyUsage extension at all is not restricted and does not trigger this error. The classic offender is an RSA certificate whose keyUsage contains only keyEncipherment while the server negotiates ECDHE or TLS 1.3.
| Browser | What you see | Most common trigger |
|---|---|---|
| Chrome | Error page with ERR_SSL_KEY_USAGE_INCOMPATIBLE | RSA certificate from a private CA or appliance with keyEncipherment only |
| Edge | The same code (Edge is Chromium-based) | Same as Chrome |
| Firefox | Usually loads; if the leaf has none of the accepted bits, SEC_ERROR_INADEQUATE_KEY_USAGE | Firefox accepts a leaf whose keyUsage has any of digitalSignature, keyEncipherment or keyAgreement |
| Safari | Its own wording, never the Chrome code | The same certificate defect, if Safari rejects it |
The error became common with Chrome 124. Chrome 116 to 123 had the enterprise policy RSAKeyUsageForLocalAnchorsEnabled; when it was disabled, Chrome skipped the check for TLS 1.2 connections that use an RSA certificate chaining to a local trust anchor (a policy-provided or user-installed root). Google's policy documentation states that starting in Chrome 124 the check is always enabled, so that policy no longer has any effect.
Certificates from public CAs normally carry digitalSignature, and connections to public trust anchors were already checked before 124. That is why the error usually appears on internal sites: router and firewall admin pages, printers, hypervisor consoles, intranet apps signed by a private CA, and HTTPS pages re-signed by a TLS-inspection proxy whose generated certificates lack the right bit. Firefox often opens the same page, which makes it look like a Chrome bug; it is not, the certificate really is mislabeled.
The browser checks the certificate of whatever terminates TLS for it, so on a Cloudflare-proxied hostname your origin certificate cannot cause this error. The checks that apply: on a load balancer or appliance (HAProxy, F5, a firewall portal) inspect the certificate uploaded there, not the backend copy, and on a corporate TLS-inspection proxy the certificate template must include digitalSignature.
openssl s_client -connect intranet.example.com:443 -servername intranet.example.com </dev/null 2>/dev/null \
| openssl x509 -noout -ext keyUsage,extendedKeyUsageIf the output shows X509v3 Key Usage: critical followed only by Key Encipherment, you have found the cause. The -ext option needs OpenSSL 1.1.1 or later; on older builds use -text and look for the same lines.# server_ext.cnf
[ server_ext ]
basicConstraints = critical, CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = DNS:intranet.example.com
openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial \
-days 365 -sha256 -extfile server_ext.cnf -extensions server_ext -out server.pemIncluding both bits is what Google's own policy text recommends for RSA certificates meant for HTTPS.nginx -t && systemctl reload nginx.Do not try to "fix" this by forcing legacy RSA key-exchange cipher suites. It cannot work with TLS 1.3, removes forward secrecy and leaves the certificate wrong for every client that negotiates ECDHE.
Clearing the browser cache, cookies or DNS will not help: the certificate is fetched fresh in every new handshake. The system clock is also irrelevant to this error.
Run the same openssl command against the live host and confirm the key usage line now reads:
X509v3 Key Usage: critical
Digital Signature, Key EnciphermentThen open the page in a current Chrome or Edge: that is the reliable reproduction, because command-line clients do not all apply the same key usage rule. To review the full chain, SANs and expiry from the outside, run the host through the enterno.io SSL checker.
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.
Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).
Full chain verification: from leaf certificate through intermediates to root CA.
Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.
Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.
SSL certificate monitoring
TLS config audit
HTTPS as ranking factor
customer trust
www and subdomains.Strict-Transport-Security header forces browsers to always use HTTPS.SSL certificate monitoring, check history and alerts 30 days before expiry.
Sign up freeNot safely and not with a supported switch. The RSAKeyUsageForLocalAnchorsEnabled policy only worked in Chrome 116 to 123; from Chrome 124 the check is always on, so the certificate has to be reissued.
Before Chrome 124, TLS 1.2 connections using an RSA certificate from a local trust anchor could skip the key usage check. Chrome 124 removed that exception, exposing certificates that were always mislabeled.
Firefox accepts a server certificate whose keyUsage contains any one of digitalSignature, keyEncipherment or keyAgreement. Chrome requires the specific bit used by the negotiated key exchange.
Internal ones: router and firewall admin pages, printers, hypervisor consoles, intranet apps signed by a private CA, and pages re-signed by a TLS-inspection proxy. Certificates from public CAs normally carry digitalSignature.
Yes. Create a new CSR from the existing key, or have the CA sign the old CSR again with corrected extensions. Only the certificate needs to change.
Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.