{{item}}
{{item.title}}
{{items.productName}}
{{items.price}}/年
{{item.title}}
部警SSL证书可实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或算改,提高网站可信度和品牌形象,利于SEO排名,为企业带来更多访问量,这也是网络安全法及PCI合规性的必备要求
前往SSL证书在访问HTTPS网站时,浏览器有时会弹出 “NET::ERR_CERT_COMMON_NAME_INVALID” 警告,这意味着证书的通用名称(Common Name)与网站域名不匹配,可能存在安全风险。这种警告不仅影响用户体验,还可能暗示网站存在潜在的安全问题。本文将详细解析该警告的产生原因,并提供全面的解决方法。
“NET::ERR_CERT_COMMON_NAME_INVALID” 本质上是浏览器的证书验证机制触发的安全提示。HTTPS证书中包含一个或多个 “通用名称”(Common Name)或 “主题备用名称”(SAN),用于指定证书对应的域名。当浏览器检测到以下情况时,会触发该警告:
现代浏览器要求证书必须包含主题备用名称(SAN)字段,即使通用名称正确。若证书仅通过通用名称指定域名,未添加SAN,会被判定为无效。
证书过期后,其有效性被终止;若证书因安全问题被吊销,浏览器也会拒绝信任,可能伴随通用名称不匹配的提示。
自签名证书(未由可信CA颁发)若未正确配置通用名称或SAN,浏览器会直接标记为不安全,触发该警告。
恶意攻击者通过篡改网络流量,使用伪造证书拦截HTTPS连接时,伪造证书的域名通常与实际域名不匹配,导致警告触发。
若确认访问的是可信网站(如内部系统、开发环境),可临时绕过警告访问页面。但注意:非信任网站可能存在信息泄露风险,谨慎操作。
浏览器缓存的证书信息可能过期或损坏,导致验证错误:
证书有效性与系统时间关联,若设备时间错误(如超前或滞后于证书有效期),会导致验证失败:
若你是网站管理员,需从证书配置入手,彻底消除警告。以下是针对不同场景的解决方案:
(1)确认证书需覆盖的域名
(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
(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
证书正确但服务器配置错误(如证书路径错误、未启用 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 }
(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>
(3)IIS 配置
内部系统或开发环境使用自签名证书时,需正确配置域名信息:
(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
(2)将自签名证书导入客户端信任库
若怀疑网络被劫持(如公共 Wi-Fi、恶意软件),可通过以下步骤验证:
若使用通配符证书(如 *.example.com),需注意:
部分旧浏览器(如 IE11)对SAN的支持不完善,需确保证书同时配置通用名称和SAN。现代浏览器(Chrome 58+、Firefox 48+)优先验证SAN,通用名称仅作为 fallback。
“NET::ERR_CERT_COMMON_NAME_INVALID” 警告的核心是证书域名与访问域名不匹配,解决需从两方面入手:
通过规范证书配置和服务器设置,可彻底消除该警告,保障HTTPS通信的安全性和可靠性。
Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构Sectigo、Digicert、GeoTrust、GlobalSign,以及国内CA机构CFCA、沃通、vTrus、上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!