
What it means: The server received your hostname via SNI, has no site configured for it, and aborted the TLS handshake.
server_name and certificate.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_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.
| Browser | What you see | Most common trigger |
|---|---|---|
| Chrome, Edge, Brave, Opera | ERR_SSL_UNRECOGNIZED_NAME_ALERT | DNS points to a server that does not host the domain |
| Firefox | SSL_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 |
www.example.com works but example.com does not, or a new subdomain was added to DNS but not to the web server.ssl_reject_handshake on; in the default server; any name not matched by another server_name gets exactly this alert.https://203.0.113.10/ lands in the default server, which may reject it.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.
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.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.comopenssl 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.server_name (nginx) or ServerName/ServerAlias in the <VirtualHost *:443> (Apache), make sure the certificate covers it, then nginx -t && systemctl reload nginx.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.
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 codeCheck the records themselves with the DNS lookup tool, and the handshake and certificate for each name with the SSL/TLS 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 freeServer 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.
Only one of the names is in the server's configuration or certificate, or the two names have DNS records pointing at different servers.
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.
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.
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.
Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.