gpt4 book ai didi

asp.net - 使用自签名证书在不同服务器上的 Web 应用程序和 Web API 之间进行通信

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:27 25 4
gpt4 key购买 nike

我的 Web 应用程序和 Web API 之间的通信有问题。当我没有强制使用 HTTPS 时它工作正常。

对我不起作用的事情与我的自签名 SSL 证书有关。当我通过浏览器访问它们中的任何一个时,我都会收到有关证书的警告,我可以将其添加到异常(exception)并正常查看页面。

但是,当它是网络应用程序和网络 API 之间的通信时,我只是在网络应用程序(调用方)的 POST 方法中收到此错误。

System.Net.Http.HttpRequestException:发送请求时出错。 ---> System.Net.WebException:基础连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException: 根据验证程序,远程证书无效。
在 System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)
在 System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)
--- 内部异常堆栈跟踪结束 ---
在 System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult、TransportContext& 上下文)
在 System.Net.Http.HttpClientHandler.GetRequestStreamCallback (IAsyncResult ar)
--- 内部异常堆栈跟踪结束 ---
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

现在,我设置证书的方式。

在 Web 应用程序服务器上,我在 IIS 管理器中添加了证书,然后为页面设置绑定(bind)以使用 https 和此证书。在 Web API 服务器上,我创建了另一个证书并将其绑定(bind)到页面。

我尝试将证书从 Web 应用导出为 pfx 文件并将其复制到 Web API 服务器。然后我使用 iis 管理器导入证书,我还使用 MMC 证书管理单元 (certlm) 从 Web 应用程序导入证书 - 我将它放在受信任的根证书颁发机构中,然后放在第三方根证书颁发机构中,最后放入个人容器 - 仍然是同样的问题。

我做错了什么?

此外,很可能当我们将它们投入生产时,它们将使用“正常”的第 3 方 SSL 证书托管,所以我想如果不是自签名证书,我就不会看到这个问题?

干杯!

最佳答案

我通过如下注册全局验证回调创建了一个仅限开发的解决方法。请注意,它基本上将验证硬编码为 true,这可能是一个安全问题。

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

在我的例子中,我已将其设置为可配置 - 默认情况下不会注册此回调,除非专门配置为这样做。

关于asp.net - 使用自签名证书在不同服务器上的 Web 应用程序和 Web API 之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com