Skip to content
RU

ERR_SSL_UNRECOGNIZED_NAME_ALERT: Server Does Not Know This Hostname

Monitor with a blurred web server configuration file in front of glowing server racks

What it means: The server received your hostname via SNI, has no site configured for it, and aborted the TLS handshake.

  1. Check you typed the right domain, not an IP.
  2. Try another network to rule out stale DNS.
  3. Fails everywhere? Tell the site owner.
  4. Owner: add the hostname to server_name and certificate.
  5. Owner: verify A and AAAA records point here.

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_UNRECOGNIZED_NAME_ALERT means

ERR_SSL_UNRECOGNIZED_NAME_ALERT is Chromium net error -159: “The SSL server sent us a fatal unrecognized_name alert.” In its first handshake message the browser names the site it wants through the SNI extension (Server Name Indication). The server looked that name up, found no virtual host for it, and ended the handshake with TLS alert 112 (unrecognized_name) at fatal level.

So the failure is at the TLS layer, but its cause is usually routing: the right name reached the wrong server, or the right server was not told about the name. It is not a certificate-name mismatch: in that case the server sends a certificate for another name and Chrome shows ERR_CERT_COMMON_NAME_INVALID. RFC 6066 lets a server either abort with a fatal unrecognized_name alert or continue the handshake, and calls a warning-level alert “NOT RECOMMENDED”; Chrome only raises this error for the fatal form.

Causes in Chrome, Edge, Firefox and Safari

BrowserWhat you seeMost common trigger
Chrome, Edge, Brave, OperaERR_SSL_UNRECOGNIZED_NAME_ALERTDNS points to a server that does not host the domain
FirefoxSSL_ERROR_UNRECOGNIZED_NAME_ALERT, “SSL peer has no certificate for the requested DNS name.”Same
Safari“Safari can't establish a secure connection to the server”Same
  • DNS points at the wrong machine. After a migration, the A or AAAA record still targets the old server, a shared IP of another tenant, or a default page. An outdated AAAA record is easy to miss: only visitors with IPv6 fail.
  • The hostname is missing from the configuration. www.example.com works but example.com does not, or a new subdomain was added to DNS but not to the web server.
  • A server set to refuse unknown names. nginx 1.19.4 and later support ssl_reject_handshake on; in the default server; any name not matched by another server_name gets exactly this alert.
  • Visiting by IP address. Browsers do not send SNI for IP literals, so https://203.0.113.10/ lands in the default server, which may reject it.

Behind Cloudflare, nginx or another proxy

A reverse proxy has the same problem in the other direction. nginx does not send SNI to an HTTPS upstream unless told to, so an upstream with ssl_reject_handshake refuses it. The browser then gets a 502 and nginx's error log shows tlsv1 unrecognized name:SSL alert number 112 while SSL handshaking to upstream.

# reject names this server does not host
server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    ssl_reject_handshake on;
}

# the real site: list every name you publish in DNS
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com www.example.com;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass https://backend.internal;
        proxy_ssl_server_name on;   # send SNI upstream (off by default)
        proxy_ssl_name $host;
    }
}

With Cloudflare proxying the record, the browser negotiates with Cloudflare's edge, so it does not see this alert from your origin; an origin refusing the name appears as a Cloudflare 525 page instead. A hostname with no edge certificate on Cloudflare shows ERR_SSL_VERSION_OR_CIPHER_MISMATCH, not this error. HAProxy's strict-sni likewise refuses handshakes for names without a matching certificate, so check its certificate list covers every name.

If you own the site

  1. Check where DNS points: dig +short example.com A and dig +short example.com AAAA, for the apex and www. Every address must be a server that hosts the site.
  2. Test each address with the right name:
    openssl s_client -connect 203.0.113.10:443 -servername example.com -brief </dev/null
    curl -sv --resolve example.com:443:203.0.113.10 https://example.com/ -o /dev/null
    # "tlsv1 unrecognized name" -> this server has no vhost for example.com
  3. Reproduce the no-SNI path (IP access, very old clients): openssl s_client -connect example.com:443 -noservername. OpenSSL 1.1.1 and later send SNI automatically when -connect names a host, so this flag is needed to test without it.
  4. Add the name to server_name (nginx) or ServerName/ServerAlias in the <VirtualHost *:443> (Apache), make sure the certificate covers it, then nginx -t && systemctl reload nginx.
  5. Fix or remove stale records, especially AAAA records left from a previous host.

If you are a visitor

  • Use the domain name, not an IP address, and check for typos in the subdomain.
  • Try mobile data or another network: if the site works there, your network's DNS may still hold an old address. Restarting the router or flushing the OS DNS cache can help after a recent migration.
  • If you use Chrome's Secure DNS (Settings > Privacy and security > Security > Use secure DNS), compare with it on and off: a different resolver can return a different, outdated address.
  • Check the hosts file for a stale entry for the domain.

Clearing the browser cache does not help. If the error appears from every network, the server or DNS is misconfigured and only the owner can fix it.

How to confirm the fix

for ip in $(dig +short example.com A) $(dig +short example.com AAAA); do
  echo "== $ip"
  curl -s -o /dev/null -w '%{http_code}\n' --resolve "example.com:443:$ip" https://example.com/
done
# every address should return a normal status code

Check the records themselves with the DNS lookup tool, and the handshake and certificate for each name with 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

What is SNI and why does it matter here?

Server Name Indication is a TLS extension in which the browser names the site it wants before the server picks a certificate. If the server has no site for that name and is set to refuse unknown names, it sends unrecognized_name and the handshake ends.

Why does the site work with www but not without it?

Only one of the names is in the server's configuration or certificate, or the two names have DNS records pointing at different servers.

Why do only some visitors see the error?

Usually DNS: an outdated AAAA record breaks IPv6 users only, and resolvers that still cache an old address send some visitors to the previous server.

Is unrecognized_name a fatal alert?

It can be sent either way. RFC 6066 recommends that a server either abort with a fatal alert or continue normally; Chrome raises this error only for the fatal form.

Why does the site fail when I open it by IP address?

Browsers do not send SNI for IP literals, so the request lands in the server's default block. If that block uses ssl_reject_handshake or has no site, the handshake ends with this alert; use the domain name instead.

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.