我正在本地开发一个web api和一个web应用程序。我在从web应用程序调用web api时遇到问题。
当我调用它时,我总是收到错误:“根据验证过程,远程证书是无效的。”
这两个应用程序都是使用ASP.Net核心构建的,并且都运行在kestrel上。webapp可以作为https://mylibrary.com:5003调用,Web API可以作为https://api.mylibrary.com:5001调用。
我如何让它们与有效的证书一起工作?
编辑:开始意识到问题是应用程序默认使用本地主机证书。我希望能够使用我自己签名的证书。
如果有人能告诉我如何在.net核心web项目中设置两个应用程序来使用自签名证书,请这样做:)
发布于 2020-05-27 09:47:18
如果需要使用HttpClient解决证书验证问题,可以通过创建一个HttpClientHandler并将其按照Rohit Jangid's answer传递给The SSL connection could not be established的方式传递给HttpClient
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
// Pass the handler to httpclient(from you are calling api)
HttpClient client = new HttpClient(clientHandler)
通过检查证书是否在开发环境中,避免意外规避生产环境中的证书验证:
HttpClient httpClient = new HttpClient();
if (env.IsDevelopment())
{
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, ssl) => { return true; };
httpClient = new HttpClient(clientHandler);
}
通过在处理程序/操作中注入关于webhostenvironment的信息:
public async Task OnGet([FromServices] IWebHostEnvironment env)
发布于 2020-01-27 09:04:42
请尝试使用RestSharp库发出webapi请求,并将证书验证设置为true。请参阅here
或者,您可以通过在命令提示符或powershell中执行dotnet dev-certs https --trust
来安装dotnet dev证书
https://stackoverflow.com/questions/59926115
复制