net::err_cert_common_name_invalid错误根本原因是证书缺失主题备用名称(san)字段。需检查url与证书cn及san中dns/ip是否完全匹配,用openssl生成带san的新证书,并导入系统信任库后重启chrome。

当你在Chrome中访问一个使用自签名或本地开发证书的HTTPS服务时,地址栏突然弹出红色警告页,显示“您的连接不是私密连接”,错误码为NET::ERR_CERT_COMMON_NAME_INVALID,说明浏览器拒绝信任该证书——根本原因不是证书过期或被吊销,而是证书里缺失现代浏览器强制要求的主题备用名称(Subject Alternative Name, SAN)字段。
确认错误是否由域名/IP不匹配引起
第一步:检查地址栏URL是否与证书声明的主体完全一致。比如证书CN设为“localhost”,但你输入的是“127.0.0.1”,或证书只写了“example.com”,你却访问了“www.example.com”,都会触发此错误。
第二步:打开开发者工具(F12)→ Security 选项卡 → 点击“View certificate” → 切换到“Details” → 展开“Subject Alternative Name”。如果该区域为空,或列出的DNS/IP与你当前访问的地址不一致,就坐实了问题根源。
第三步:临时用curl验证——执行 curl -vk https://your-domain-or-ip。若返回中出现 subjectAltName does not match,说明服务端证书确实未覆盖访问入口,必须重生成。
快速修复:用OpenSSL命令行生成带SAN的证书
方法一:单IP地址调试(如192.168.1.100)
执行以下命令,注意替换最后两处IP为你的实际地址:
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 3650 -subj "/CN=192.168.1.100" -addext "subjectAltName=IP:192.168.1.100"
这一步会同时生成私钥(server.key)和证书(server.crt),且直接注入IP型SAN字段。-addext参数是OpenSSL 1.1.1+版本才支持的关键开关,旧版本会报错,必须升级或改用配置文件方式。
方法二:支持多域名+本地回环(推荐开发环境)
创建文本文件 ssl.conf,内容如下:
[req]default_bits = 2048prompt = nodefault_md = sha256distinguished_name = dnx509_extensions = v3_req[dn]CN = localhost[v3_req]keyUsage = keyEncipherment, dataEncipherment, digitalSignatureextendedKeyUsage = serverAuthsubjectAltName = @alt_names[alt_names]DNS.1 = localhostDNS.2 = example.testIP.1 = 127.0.0.1
然后运行:openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 3650 -config ssl.conf -extensions v3_req
这个配置明确声明了三个可信任入口:域名localhost、example.test,以及IPv4回环地址。缺一不可——哪怕只漏掉DNS.1 = localhost,Chrome访问https://localhost时仍会报错。
证书部署与客户端信任设置
第一步:将新生成的server.crt文件复制到前端项目或后端服务的证书目录,确保Web服务器(如Nginx/Apache/Node.js HTTPS模块)加载的是这个新版证书,而不是旧的无SAN版本。
第二步:在Windows上双击server.crt → 选择“安装证书” → “本地计算机” → “受信任的根证书颁发机构” → 完成。macOS用户需双击证书 → 在钥匙串访问中右键该证书 → “显示简介” → 展开“信任” → “当使用此证书时”设为“始终信任”。
第三步:重启Chrome浏览器。不要仅刷新页面——旧证书状态可能缓存,必须彻底关闭所有Chrome进程(任务管理器中结束chrome.exe)再启动。
第四步:访问 chrome://settings/clearBrowserData → 高级 → 勾选“SSL 状态” → 清除数据。这一步能清除浏览器对旧证书的“已拒绝”记忆,否则即使新证书已安装,仍可能沿用错误缓存。
绕过警告的临时方案(仅限测试)
方法1:启动Chrome时添加忽略参数(仅限桌面快捷方式)
右键Chrome快捷方式 → 属性 → 在“目标”末尾追加: --test-type --ignore-certificate-errors。注意前面留一个空格,且必须同时带--test-type,否则Chrome会拒绝执行并提示“不受支持的命令行标记”。
方法2:地址栏输入 thisisunsafe(仅限当前标签页)
当红色警告页出现时,键盘直接敲入 thisisunsafe(无需回车、无需点击任何位置、无需切换焦点),页面将立即刷新并加载不安全内容。该触发词是Chrome内置的紧急逃生通道,每次新开标签页都需要重新输入。











