# ERR_SSL_UNRECOGNIZED_NAME_ALERT：服务器不认识这个域名

> ERR_SSL_UNRECOGNIZED_NAME_ALERT 表示服务器拒绝了 SNI 里的域名。检查 DNS 解析、虚拟主机、CDN 加速域名或 ssl_reject_handshake 配置。

Source: https://ssl.sh/zh/errors/err-ssl-unrecognized-name-alert/
Last updated: 2026-11-10

**ERR_SSL_UNRECOGNIZED_NAME_ALERT 的意思是：服务器收到了你要访问的域名，回复说“我不提供这个域名的服务”。** 连接在出示证书之前就被拒绝了，说明 DNS 解析和服务器配置对不上。

## 先判断是网站的问题还是你电脑的问题

基本是网站的问题。用 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/) 从外部测：

```bash
curl ssl.sh/example.com
```

检测也收到同样的告警，就是服务器或 CDN 上缺这个域名。访客这边要排除的是：域名拼错、hosts 文件里有旧条目（`C:\Windows\System32\drivers\etc\hosts` 或 `/etc/hosts`）、DNS 过滤软件把域名重定向了。

## 原因

最常见的原因是 DNS 指向了不托管这个网站的服务器；另外 4 种都是服务器不认识客户端发来的域名（SNI）。

### 1. DNS 指向的服务器不托管这个网站

迁移服务器之后，A 记录还指着旧服务器，旧服务器上已经没有这个站点。对比一下：

```bash
dig +short example.com
curl -sv --resolve example.com:443:203.0.113.10 https://example.com/ -o /dev/null 2>&1 | grep -i alert
```

在 DNSPod、阿里云解析里改完记录后，注意 TTL 没过期前部分用户还会解析到旧地址。

### 2. Nginx 默认站点开了 ssl_reject_handshake

Nginx 1.19.4 起，在兜底的 server 里写 `ssl_reject_handshake on;`，遇到不认识的 [SNI](https://ssl.sh/zh/glossary/sni/) 域名就会发这个告警。这本来是有意为之；要修的是给这个域名加上 `server_name` 正确的 server 块。

### 3. 缺虚拟主机或绑定

Apache 没有这个域名的 `<VirtualHost *:443>`；IIS 勾选了“需要服务器名称指示”却没给这个主机名建 HTTPS 绑定；HAProxy 开了 `strict-sni` 却没有这个域名的证书。宝塔面板里则是这个域名没加到任何站点的“域名管理”中。

### 4. CDN 或负载均衡上没有这个域名

DNS 已经 CNAME 到 CDN，但域名从没添加到 CDN 账户，或者已经被删除、被停用（比如欠费、备案失效）。节点会拒绝不认识的 SNI。

### 5. 客户端发送的域名和预期不同

浏览器里少见，但配置错误的代理可能改写或去掉 SNI。换个网络测一下。

## 在各浏览器/系统上的样子

Chrome、Firefox、curl 和 Java 客户端收到的是同一个 TLS 告警，只是显示的文字不同。

| 浏览器 | 显示内容 |
|---|---|
| Chrome / Edge / 360 / QQ 浏览器 | “此网站无法提供安全连接”，代码 `ERR_SSL_UNRECOGNIZED_NAME_ALERT` |
| Firefox | “建立安全连接失败”，常见代码 `SSL_ERROR_UNRECOGNIZED_NAME_ALERT` |
| curl | `tlsv1 unrecognized name` |
| Java 客户端 | `javax.net.ssl.SSLHandshakeException: Received fatal alert: unrecognized_name` |

## 站长怎么修

修法是让 DNS 指向的那台服务器或 CDN 认识这个域名：加上对应的站点配置和证书。

**1. 确认 DNS 指向正确。** A/AAAA 或 CNAME 记录要指向实际托管网站的服务器或 CDN。

**2. 添加匹配的 server 块。**

```nginx
server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate     /etc/nginx/ssl/example.com.fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
}

server {
    listen 443 ssl default_server;
    ssl_reject_handshake on;
}
```

第二个 server 块继续拒绝不认识的域名，这是好做法，前提是所有真实域名都写进了第一个 server 块。

**3. 在 CDN 或负载均衡上添加域名**，并绑定对应证书。操作步骤见[阿里云 CDN 配置 HTTPS](https://ssl.sh/zh/guides/aliyun-cdn-https/)和[腾讯云 CDN 配置 HTTPS](https://ssl.sh/zh/guides/tencent-cloud-cdn-https/)。

**4. 复测。** 运行 `curl ssl.sh/example.com`，每个别名也测一遍（比如 `curl ssl.sh/www.example.com`）。
