内网运行ASP.Net Web Api遇NET:ERR_CERT_AUTHORITY_INVALID证书问题咨询
内网环境下ASP.NET Web API实现安全HTTPS连接的解决方案
方案一:使用自签名证书(小范围内网首选)
适合只有几台内网设备的场景,操作简单:
- 生成自签名证书
打开服务器的管理员PowerShell,执行命令:
把New-SelfSignedCertificate -DnsName "xxx.xxx.xxx.xxx" -CertStoreLocation "Cert:\LocalMachine\My"xxx.xxx.xxx.xxx替换成服务器实际内网IP,也可添加自定义内网域名(如server.local),多个值用逗号分隔。 - 绑定证书到Web API
- IIS部署:打开IIS管理器,找到目标网站,右键选择「编辑绑定」,添加HTTPS绑定,选择刚生成的证书,端口设为9100。
- ASP.NET Core自托管:先将证书导出为带密码的
.pfx文件,再在Program.cs中配置Kestrel:builder.WebHost.UseKestrel(options => { options.ListenAnyIP(9100, listenOptions => { listenOptions.UseHttps("证书文件路径.pfx", "证书密码"); }); });
- 分发证书到内网客户端
在服务器上导出证书为.cer格式(无需密码),然后在内网每台客户端电脑上:- 双击
.cer文件,点击「安装证书」 - 选择「本地计算机」,下一步
- 选择「将所有证书放入下列存储」,点击「浏览」,选择「受信任的根证书颁发机构」
- 完成安装后,浏览器将信任该证书,不再提示连接非私密。
- 双击
方案二:搭建内网CA证书颁发机构(大规模内网适用)
如果内网设备较多,不想逐个分发证书,可搭建内网根CA:
- 部署内网根CA
在一台Windows服务器上安装「Active Directory证书服务(AD CS)」,选择「证书颁发机构」和「证书颁发机构Web注册」角色,配置为根CA。 - 申请服务器证书
在Web API服务器上,通过「证书管理器」或IIS的「服务器证书」功能,向内网CA申请包含服务器IP或内网域名的SSL证书。 - 配置客户端信任根CA
把内网CA的根证书导出为.cer文件,分发到所有内网客户端的「受信任的根证书颁发机构」存储中,后续该CA签发的所有证书都会被自动信任。
方案三:使用Let's Encrypt证书(内网服务器可访问公网时可选)
若内网服务器能访问公网,且有公网可解析域名(或可配置DNS记录),可使用免费的Let's Encrypt证书:
- 用Certbot工具在服务器上申请证书,选择适配IIS或ASP.NET Core的插件。
- 将证书绑定到Web API的HTTPS端口。
- 主流浏览器默认信任Let's Encrypt根证书,内网客户端无需额外配置即可正常访问。
新手注意事项
- 证书的
DnsName必须与访问API时使用的地址完全一致(用IP访问填IP,用域名访问填域名),否则浏览器仍会报错。 - 导入证书时必须选择「受信任的根证书颁发机构」存储,放在其他位置不会生效。
- 开发环境用
dotnet dev-certs https --trust生成的证书仅本地信任,内网其他设备无法识别,需导出后分发才能使用。
内容的提问来源于stack exchange,提问作者Josef
相关产品推荐
相关产品推荐

