Email:2225994292@qq.com
CNY
浏览器警告“NET::ERR\_CERT\_COMMON\_NAME\_INVALID”如何解决?
更新时间:2025-08-01 作者:企业SSL证书服务

在访问HTTPS网站时,浏览器有时会弹出 “NET::ERR_CERT_COMMON_NAME_INVALID” 警告,这意味着证书的通用名称(Common Name)与网站域名不匹配,可能存在安全风险。这种警告不仅影响用户体验,还可能暗示网站存在潜在的安全问题。本文将详细解析该警告的产生原因,并提供全面的解决方法。

一、警告产生的核心原因

“NET::ERR_CERT_COMMON_NAME_INVALID” 本质上是浏览器的证书验证机制触发的安全提示。HTTPS证书中包含一个或多个 “通用名称”(Common Name)或 “主题备用名称”(SAN),用于指定证书对应的域名。当浏览器检测到以下情况时,会触发该警告:

1. 证书通用名称与访问域名不匹配

  • 证书中填写的通用名称为example.com,但用户实际访问的是www.example.com(子域名差异)。
  • 证书仅包含a.example.com,但用户访问的是b.example.com(不同子域名)。
  • 证书为example.org,但用户访问的是example.com(主域名差异)。

2. 证书缺少主题备用名称(SAN)

现代浏览器要求证书必须包含主题备用名称(SAN)字段,即使通用名称正确。若证书仅通过通用名称指定域名,未添加SAN,会被判定为无效。

3. 证书过期或被吊销

证书过期后,其有效性被终止;若证书因安全问题被吊销,浏览器也会拒绝信任,可能伴随通用名称不匹配的提示。

4. 自签名证书配置错误

自签名证书(未由可信CA颁发)若未正确配置通用名称或SAN,浏览器会直接标记为不安全,触发该警告。

5. 网络劫持或中间人攻击

恶意攻击者通过篡改网络流量,使用伪造证书拦截HTTPS连接时,伪造证书的域名通常与实际域名不匹配,导致警告触发。

二、用户端:临时解决访问问题(谨慎使用)

若确认访问的是可信网站(如内部系统、开发环境),可临时绕过警告访问页面。但注意:非信任网站可能存在信息泄露风险,谨慎操作

1. 临时绕过浏览器警告(仅单次有效)

  • Chrome/Edge 浏览器:在警告页面点击 “高级”,选择 “继续访问 [域名](不安全)”。
  • Firefox 浏览器:点击 “高级”→“添加例外”→“确认安全例外”。

2. 清除浏览器缓存和证书信息

浏览器缓存的证书信息可能过期或损坏,导致验证错误:

  • 打开浏览器设置,进入 “隐私和安全”→“清除浏览数据”。
  • 勾选 “缓存的图片和文件”“Cookie 和其他网站数据”,选择时间范围为 “所有时间”,点击清除。
  • 重启浏览器后重新访问网站。

3. 检查系统时间和日期

证书有效性与系统时间关联,若设备时间错误(如超前或滞后于证书有效期),会导致验证失败:

  • 同步系统时间:在 Windows 中右键点击任务栏时间→“调整日期 / 时间”→开启 “自动设置时间”;在 macOS 中,进入 “系统设置”→“通用”→“日期与时间”→勾选 “自动设置”。

三、服务器端:彻底解决证书配置问题

若你是网站管理员,需从证书配置入手,彻底消除警告。以下是针对不同场景的解决方案:

1. 重新申请包含正确域名的证书

(1)确认证书需覆盖的域名

  • 明确网站的所有访问域名,包括主域名(如example.com)、子域名(如www.example.com、api.example.com)、多域名(如example.net)。

(2)申请包含SAN字段的证书

现代证书必须包含SAN字段,且需覆盖所有访问域名。以Let's Encrypt(免费CA)为例,使用 Certbot 工具申请:

1    # 安装Certbot(以Nginx为例)
2   sudo apt install certbot python3-certbot-nginx
3
4    # 申请包含多个域名的证书(主域名+子域名)
5    sudo certbot --nginx -d example.com -d www.example.com -d api.example.com
  • 命令中 -d 参数指定需要包含的域名,Certbot 会自动生成包含这些域名的SAN字段。

(3)验证证书内容

申请后,可通过 openssl 工具检查证书的通用名称和SAN:

1    openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -noout -text | grep -A 1 "Subject Alternative Name"

输出应包含所有需要覆盖的域名,例如:

1    X509v3 Subject Alternative Name:
2       DNS:example.com,DNS:www.example.com,DNS:api.example.com

2. 修复Web服务器配置

证书正确但服务器配置错误(如证书路径错误、未启用 SNI)也会导致警告,以下是主流服务器的配置示例:

(1)Nginx 配置

1    server {
2        listen 443 ssl;
3        server_name example.com www.example.com api.example.com;  # 匹配证书中的所有域名
4  
5        # 证书路径(替换为实际路径)
6        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
7        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
8
9        # 启用SNI(多域名证书必需)
10      ssl_protocols TLSv1.2 TLSv1.3;
11      ssl_prefer_server_ciphers on;
12  }
  • 确保 server_name 包含证书中所有域名,且证书路径正确。

(2)Apache 配置

1    <VirtualHost *:443>
2        ServerName example.com
3        ServerAlias www.example.com api.example.com  # 附加域名
4 
5        SSLEngine on
6        SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
7        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
8        SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
9    </VirtualHost>
  • 通过 ServerAlias 指定所有子域名或多域名,与证书SAN匹配。

(3)IIS 配置

  • 打开 “IIS 管理器”,选中网站→“绑定”→“添加”,类型选择 “https”,主机名填写域名(如example.com),选择正确的证书。
  • 重复 “添加” 步骤,为每个子域名或多域名配置绑定,确保所有域名均关联到正确证书。

3. 处理自签名证书(开发 / 内部环境)

内部系统或开发环境使用自签名证书时,需正确配置域名信息:

(1)生成包含SAN的自签名证书

使用 openssl 生成证书,指定通用名称和SAN:

1    # 创建配置文件(san.cnf)
2   CAt >SAN.cnf << EOF
3    [req]
4    prompt = no
5    default_bits = 2048
6    distinguished_name = dn
7    x509_extensions = v3_ext
8
9    [dn]
10  C = CN
11  ST = State
12  L = City
13  O = Organization
14  CN = example.com
15
16  [v3_ext]
17  subjectAltName = @alt_names
18  keyUsage = digitalSignature, keyEncipherment
19  extendedKeyUsage = serverAuth
20
21  [alt_names]
22 DNS.1 = example.com
23 DNS.2 = www.example.com
24 DNS.3 = api.example.com
25  EOF
26
27  # 生成自签名证书
28  openssl req -new -x509 -days 365 -nodes -keyout server.key -out server.crt -configSAN.cnf
  • 配置文件中 [alt_names] 列出所有需覆盖的域名,确保与访问域名一致。

(2)将自签名证书导入客户端信任库

  • Windows:双击 server.crt →“安装证书”→选择 “当前用户”→“将所有证书放入以下存储”→“浏览”→选择 “受信任的根证书颁发机构”→完成导入。
  • macOS:双击 server.crt →打开 “钥匙串访问”→选择 “系统”→右键点击证书→“显示简介”→“信任”→“使用此证书时” 选择 “始终信任”。
  • Linux:将证书复制到 /usr/local/share/ca-certificates/ ,执行 sudo update-ca-certificates 更新系统信任库。

4. 检查并修复网络劫持

若怀疑网络被劫持(如公共 Wi-Fi、恶意软件),可通过以下步骤验证:

  • 使用手机热点连接网络,重新访问网站。若警告消失,说明原网络存在劫持。
  • 扫描设备是否感染恶意软件:使用杀毒软件(如 Windows Defender、Malwarebytes)全盘扫描。
  • 更换DNS服务器:将DNS设置为公共DNS(如 114.114.114.114、8.8.8.8),避免使用运营商或未知DNS。

四、常见问题与进阶排查

1. 证书正确但警告仍存在?

  • 检查服务器是否配置HTTP/HTTPS混合内容:若HTTPS页面包含 HTTP 资源,浏览器可能标记为不安全,需将所有资源改为HTTPS。
  • 确认证书链完整:服务器需配置完整的证书链(包括服务器证书中间CA证书)。例如,Let's Encrypt需使用 fullchain.pem 而非 cert.pem

2. 子域名通配符证书的配置

若使用通配符证书(如 *.example.com),需注意:

  • 通配符仅匹配一级子域名(如 www.example.com有效,a.b.example.com无效)。
  • 证书需包含SAN字段,且通配符域名需在SAN中(如 DNS:*.example.com)。

3. 浏览器版本兼容性

部分旧浏览器(如 IE11)对SAN的支持不完善,需确保证书同时配置通用名称和SAN。现代浏览器(Chrome 58+、Firefox 48+)优先验证SAN,通用名称仅作为 fallback。

“NET::ERR_CERT_COMMON_NAME_INVALID” 警告的核心是证书域名与访问域名不匹配,解决需从两方面入手:

  • 用户端:临时绕过警告仅适用于可信网站,优先通过清除缓存、同步时间排查简单问题。
  • 服务器端:重新申请包含正确SAN的证书,配置服务器绑定所有域名,确保证书链完整。自签名证书需严格匹配域名并导入信任库。

通过规范证书配置和服务器设置,可彻底消除该警告,保障HTTPS通信的安全性和可靠性。


Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构SectigoDigicertGeoTrustGlobalSign,以及国内CA机构CFCA沃通vTrus上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!
相关文档
立即加入,让您的品牌更加安全可靠!
申请SSL证书
0.174505s