Windows Server 2016 IIS使用域内微软CA签发证书时Chrome提示NET::ERR_CERT_COMMON_NAME_INVALID的问题求助
嗨,我来帮你排查这个问题~
这个情况其实很常见,核心原因是现代浏览器(比如Chrome)已经不再只依赖证书的Common Name(CN)来验证域名匹配了,而旧版IE还保留了兼容逻辑,所以才会出现两种浏览器表现不一致的情况。
Chrome现在要求证书必须包含**Subject Alternative Name(SAN,主题备用名称)**扩展,并且这个扩展里要明确列出网站的域名——哪怕你的CN和网站域名完全一致,只要SAN里没对应条目,Chrome就会判定证书无效,抛出NET::ERR_CERT_COMMON_NAME_INVALID错误。
下面是具体的解决步骤:
第一步:检查现有证书的SAN字段
打开服务器的MMC证书管理单元(mmc.exe→ 添加/删除管理单元 → 证书 → 计算机账户),找到你导入的证书,右键→属性→详细信息,滚动找到「主题备用名称」项。如果这里没有显示你网站的DNS域名(比如DNS:yourwebsite.yourdomain.com),那就是问题根源。第二步:重新生成包含SAN的证书请求(CSR)
你需要重新生成CSR,确保里面包含SAN信息,有两种简单方法:- 通过IIS图形界面生成:
在IIS管理器中发起新证书请求时,到「指定证书友好名称」步骤后,点击「更多选项」→「创建新证书请求文件」,在弹出的窗口里点击「属性」,切换到「使用者备用名称」标签,添加「DNS」类型的条目,输入你的网站域名(如果有多个域名,比如www和非www,要全部加上)。 - 通过PowerShell生成:
运行以下命令(替换成你的域名):New-CertificateRequest -Subject "CN=yourwebsite.yourdomain.com" -SAN "DNS=yourwebsite.yourdomain.com" -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm SHA256 -KeyExportPolicy Exportable -Provider "Microsoft RSA SChannel Cryptographic Provider" -Path "C:\temp\yourwebsite.csr"
- 通过IIS图形界面生成:
第三步:用域CA重新签发证书
把新生成的CSR提交给你的域微软CA,签发时注意选择支持SAN的证书模板(默认的「Web Server」模板已经支持)。签发完成后,检查新证书的「主题备用名称」,确认包含你的网站域名。第四步:重新导入证书到IIS并绑定
删除服务器上旧的证书,导入新签发的带SAN的证书,然后在IIS中重新设置HTTPS绑定,确保选择的是新证书。第五步:验证Chrome访问
重启Chrome(或者清除浏览器缓存),再次访问你的网站,应该就能正常显示安全连接了。
另外补充个小细节:如果你的网站有多个访问域名,一定要把所有域名都加到SAN字段里,这样所有域名都能被Chrome信任。
备注:内容来源于stack exchange,提问作者mardon

