IIS管理器生成的Self Signed Certificate报错,是否生成方法存在问题?
IIS自签名证书部署ASP.NET Core的问题排查与解决
问题根源
IIS管理器默认生成的自签名证书存在两个关键配置缺陷,导致Chrome拦截访问:
- CN不匹配:IIS生成的证书默认用服务器主机名作为Common Name(CN),若网站绑定的是自定义域名(如
myiisapp.com),CN与访问域名不一致就会触发NET::ERR_CERT_COMMON_NAME_INVALID错误。 - 密钥用途不全:IIS默认生成的证书仅启用「服务器身份验证」的密钥用途,但Chrome要求证书同时包含「数字签名」等扩展用途,缺失的话会触发
ERR_SSL_KEY_USAGE_INCOMPATIBLE,即便忽略CN警告也无法访问。
而PowerShell生成证书时可手动指定CN和完整的密钥用途参数,因此能通过Chrome校验,仅显示自签名警告。
修复步骤
1. 重新生成符合要求的IIS自签名证书
若坚持用IIS管理器生成,需调整生成参数:
- 打开IIS管理器,进入「服务器证书」→「创建自签名证书」
- 填写友好名称后,选择「个人」存储位置,点击下一步
- 关键操作:在「证书属性」中手动设置使用者名称为网站域名(如
myiisapp.com) - 部分IIS版本需在证书生成后,通过「证书管理器」修改扩展属性,确保启用「服务器身份验证」和「数字签名」的密钥用途
2. 验证证书配置
运行certmgr.msc打开证书管理器,找到目标证书:
- 查看「详细信息」→「使用者备用名称」,确认包含网站域名
- 查看「密钥用法」,确认包含「数字签名」「密钥加密」「服务器身份验证」
3. 重新绑定网站HTTPS端口
删除原有443端口绑定,重新添加HTTPS绑定:
- 选择刚生成的正确证书
- 填写主机名
myiisapp.com,勾选「要求服务器名称指示(SNI)」
4. 导入证书到受信任根(可选)
若不想每次看到警告,可将证书导入「本地计算机」的「受信任的根证书颁发机构」,Chrome会信任该证书,不再显示警告。
替代方案:PowerShell快速生成合规证书
若嫌IIS配置繁琐,直接用PowerShell生成符合要求的证书,命令示例:
New-SelfSignedCertificate -DnsName "myiisapp.com" -CertStoreLocation "cert:\LocalMachine\My" -KeyUsage DigitalSignature, KeyEncipherment -EnhancedKeyUsage "Server Authentication" -FriendlyName "My IIS App SSL Cert"
生成后到IIS「服务器证书」中导入,再绑定到网站即可。
内容的提问来源于stack exchange,提问作者yogihosting
相关产品推荐
相关产品推荐

