Chrome: ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY — HTTP/2 requires a modern TLS cipher
The server speaks HTTP/2 but negotiated a TLS version or cipher that HTTP/2 forbids (blocklisted ciphers or TLS below 1.2).
HTTP/2 inadequate transport security Meaning
HTTP/2 mandates TLS 1.2+ and prohibits a list of weak cipher suites. If your Nginx/Apache/load balancer enables http2 but keeps old ciphers first, browsers abort. Use a modern cipher list (Mozilla "intermediate") and put ECDHE-GCM suites first.
Common causes
- HTTP/2 enabled with legacy cipher order
- TLS 1.0/1.1 still negotiated
- Cipher string includes blocklisted suites first
- Old OpenSSL on the server
- Load balancer policy outdated
⚡ Quick fix
- Use Mozilla intermediate ciphers and TLS 1.2/1.3
- Update OpenSSL / web server
- Check with
nghttp -v https://hostor SSL Labs
Detailed fix by platform
Nginx
listen 443 ssl http2; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
How to diagnose
- Protocol — h2 negotiated?
- Cipher — On HTTP/2 blocklist?
- TLS — 1.2+?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- AH01909: server certificate does NOT include an ID which matches the server name Apache: [ssl:warn] AH01909: example.com:443:0 server certificate does NOT include an ID which matches the server name
- CAA record forbids issuance Let's Encrypt/CA: CAA record for example.com prevents issuance
- ERR_SSL_KEY_USAGE_INCOMPATIBLE Chrome: ERR_SSL_KEY_USAGE_INCOMPATIBLE — the certificate's key usage doesn't allow the negotiated cipher
Most viewed in SSL / TLS
- NET::ERR_CERT_COMMON_NAME_INVALID NET::ERR_CERT_COMMON_NAME_INVALID: Your connection is not private (certificate is for a different domain)
- Challenge failed for domain Let’s Encrypt / Certbot: Challenge failed for domain example.com — Invalid response from http://example.com/.well-known/acme-challenge/x: 404
- no start line OpenSSL: unable to load certificate / PEM routines:get_name:no start line (key values mismatch)
Other ways to find it
Where this error sits
Origin: Network. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 4 Nov 2026