Web窗体中的HttpClient错误.根据验证过程,远程证书无效



在用现代JS前端替换Web Forms应用程序之前,我们目前正在将VB.Net中运行在.Net Framework 4.8上的旧Web Forms应用转换为使用新的.Net 6 API。我们正在使用HttpClient将存储库调用替换为对新API的调用来实现这一点。我们使用的是HttpClient的NuGet版本,而不是.NET Framework版本。WebForms应用程序在开发计算机上托管的IIS中运行,API也在开发计算机中使用Kestrel运行。

证书是为localhost颁发的,两个应用程序都在localhost上的不同端口上提供服务。

不幸的是,当使用自签名的开发证书在开发机器上运行时,我们在调用PostAsync()PutAsync()时会出现以下异常

System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

我搜索并尝试了几乎所有发布在类似问题上的答案,并尝试了这些情况下给出的大多数答案。这包括将证书添加到RCA/ICA,并使用重新生成开发证书

dotnet dev-certs https --clean
dotnet dev-certs https
dotnet dev-certs https --trust

我甚至将IIS切换为使用SSL的dev-cert,以防出现问题。

我唯一没有尝试过的解决方案是绕过整个证书验证过程,因为它更多的是一种破解,而不是一种解决方案。这不是一个可行的长期解决方案。

Web Forms应用程序可以成功调用各种Azure API,包括密钥库和Azure文件,因此HttpClient本身不是问题。API可以在没有任何问题的情况下从Firefox/Chrome/Edge访问。

除了我尝试过的和我不愿意做的之外,还有什么想法吗?

发现问题。

dotnet dev-certs https --create在Certificates-Current User(certmgr.msc(存储中生成dev-cert。NET Framework在证书-本地计算机(certlm.msc(存储中查找证书。

将创建的开发证书复制到Personal中的本地计算机存储->证书和受信任的根证书颁发机构->证书文件夹修复了此问题。严格来说,我不知道它是个人文件夹还是TRCA文件夹,但我把它放在两个地方只是为了确定。

最新更新