ASP.NET Core Web API部署IIS后HTTPS客户端连接证书错误问题问询
问题原因排查及解决方案
核心报错原因
你遇到的两类SSL报错本质都是服务端证书配置不符合客户端校验规则,和你的JWT逻辑、ASP.NET Core代码本身没有直接关联:
- Postman报
Hostname/IP does not match certificate's altnames:你发起请求使用的主机名/IP,不在Comodo颁发的SSL证书的「使用者可选名称(SAN)」列表里,证书和访问域名不匹配。 - HttpClient报无法建立SSL信任关系:除了上述域名不匹配的问题外,大概率是你的服务器没有完整安装Comodo的中间根证书,客户端无法将站点证书溯源到系统信任的根证书机构,判定证书不可信。
你当前在客户端写的ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true是完全不可用于生产环境的危险写法,相当于跳过所有SSL校验,中间人攻击可以随意窃听、篡改你所有请求数据,JWT身份认证的安全性也会完全失效,必须删掉。
修复步骤
1. 匹配访问域名与证书绑定域名
- 打开服务器IIS管理器,找到你站点绑定的Comodo证书,双击打开证书详情,切换到「详细信息」标签,找到「使用者可选名称」字段,确认你发起请求用的主机名(比如你Postman里请求的URL前缀
https://xxx.xxx.com里的xxx.xxx.com)完全在该字段的列表中。 - 生产环境不要用IP地址发起请求,除非你的证书特意绑定了对应IP,否则必然触发域名不匹配报错。
- 如果你需要用多个域名访问该API,可以申请多域名证书或者泛域名证书,保证所有访问用的域名都在证书SAN列表中。
2. 补全服务器证书链
- 同样在证书详情页切换到「证书路径」标签,如果显示有警告或者错误,说明服务器缺少Comodo对应的中间证书、根证书。
- 把Comodo给你发证书时附带的CA中间证书、根证书,分别安装到服务器的「本地计算机」存储的「中间证书颁发机构」、「受信任的根证书颁发机构」目录下,安装完成后重启IIS服务。
3. 可选代码优化
你贴的Startup.cs里JWT配置的RequireHttpsMetadata = false建议生产环境改为true,配合你已经启用的UseHttpsRedirection,避免HTTP明文请求传输敏感的JWT令牌,进一步提升安全性。
对外发布说明
只要完成上述配置,Comodo作为公认的公共CA,其根证书在所有主流操作系统(iOS、Windows、Linux、Android等)、浏览器、HTTP客户端中都是默认信任的,开发者不需要做任何额外配置就能正常访问,不会出现连接问题。
内容的提问来源于stack exchange,提问作者Ross Kelly
相关产品推荐
相关产品推荐

