我们目前正在转换VB.Net中运行在.NET Framework4.8上的一个旧的Web应用程序,以使用一个新的.NET 6API,然后再将Web应用程序替换为一个现代的JS前端。我们正在用调用新API来替换存储库调用,使用HttpClient来实现这一点。我们使用的是NuGet版本的HttpClient,而不是.NET框架版本。WebForms应用程序在托管于开发机器上的IIS中运行,API也使用Kestrel运行在开发机器上。
证书是为本地主机颁发的,两个应用程序都在不同端口上的本地主机上服务。
不幸的是,当使用自签名的dev cert在dev计算机上运行时,当调用
PostAsync()
或
PutAsync()
时,我们会得到以下异常
System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
我已经搜索和尝试了几乎每一个类似问题的答案,并尝试了这些案例中的大多数答案。这包括将cert添加到RCA/ICA,并使用
dotnet dev-certs https --clean
dotnet dev-certs https
dotnet dev-certs https --trust
我甚至已经将IIS切换到使用SSL的dev cert,以防止出现问题。
我没有尝试过的唯一解决方案,因为它更像是一个黑客,而不是一个解决方案,就是绕过整个证书验证过程。这不是一个可行的长期解决办法。
Web应用程序可以成功地调用各种Azure,包括Key Vault和Azure Files,因此HttpClient本身并不是一个问题。API可以从Firefox/Chrome/Edge获得,没有任何问题。
除了我尝试过的和我不愿意做的以外,还有什么想法吗?
发布于 2022-09-12 21:06:05
发现了问题。
dotnet dev-certs https --create
在证书-当前用户(certmgr.msc)存储中生成开发证书。.NET框架在证书-本地计算机(certlm.msc)存储区中查找证书。
将创建的开发证书复制到个人->证书和受信任根证书颁发机构的本地计算机存储区中,->证书文件夹修复了该问题。严格地说,我不知道它需要是个人文件夹还是TRCA文件夹,但我把它放在两个地方只是为了确定。
https://stackoverflow.com/questions/73669132
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287