gpt4 book ai didi

.net - 带有 ssl : Certificate not recognized when run under IIS 的 HttpRequest

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

我们运行一个 soap 服务应用程序(wse 3 但也符合 WCF)。除了本身是一项服务之外,该应用程序还使用带有 ssl 的 HttpRequest 实例从第三方检索信息。当使用单元测试运行该 HttpRequest 实例时,第三方服务会识别给定的证书并且它工作正常。然而,当我们的肥皂服务应用程序在 IIS 中运行时,第三方不再识别该证书。

在 IIS 下运行 HttpClient 有什么不同?它会改变我使用 HttpRequest 发送的请求吗?我怎样才能直接设置它(配置?)?

最佳答案

This article给了我一个想法如何解决这个问题。Asp.net 检查服务器证书的名称“CN= ...”是否与服务器的域名匹配。

因此,如果外部服务器的证书不符合该规则,则来自 asp.net 应用程序的 https 请求将不信任该连接。因此,如果您没有机会更改外部服务器的配置(第 3 方),则必须禁用检查。

可以通过将自定义委托(delegate)传递给 asp.net 的(主要是)静态 ServicePointManager 类来关闭它。

我将那个位放入我的 https 连接器类的静态构造函数中:(但是对于整个应用程序中的任何 https 连接,该检查将被关闭)

public class MyExternalSslServiceConnector : IMyExternalServiceConnector
{
protected string ServiceUrl { get; set; }
public X509Certificate2 SslCertificate { get; set; }

static MyExternalSslServiceConnector()
{
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
}

public MyExternalSslServiceConnector(string myExternalServiceUrl, X509Certificate2 sslCertificate)
{
this.ServiceUrl = myExternalServiceUrl;
this.SslCertificate = sslCertificate;
}

// further implementation using HttpRequest class [...]
}

亲切的问候,C.

关于.net - 带有 ssl : Certificate not recognized when run under IIS 的 HttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5349962/

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