【问题标题】:C# SDK - ASP.NET Core 2.1 - The SSL connection could not be establishedC# SDK - ASP.NET Core 2.1 - 无法建立 SSL 连接
【发布时间】:2023-08-25 18:32:01
【问题描述】:

C# SDK - ASP.NET Core 2.1 - 无法建立 SSL 连接

我试过了

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

它在 .NET Framework 中运行,但不在 ASP.NET Core 中。

我也试过了

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

但是我在 ASP.NET Core 中没有获得成功

我想在 asp.net core 中生成自己的 SSL

【问题讨论】:

    标签: ssl asp.net-core splunk


    【解决方案1】:

    在 .NET 核心中,您应该在 HttpClient 级别执行此操作,而不是使用 ServicePointManager 对象,例如

    https://*.com/a/44540071/1538039

    我在这里回答了一个类似的问题 - https://*.com/a/55358543/1538039

    虽然您可以以这种方式绕过验证,但如果您控制服务器,这不是正确的方法。你基本上是在说'我已经以某种方式配置了服务器,这意味着我的客户端无法建立信任,因为它并没有隐式地信任证书链。为了解决这个问题,我将通过添加一些代码来接受所有错误'

    更好的解决方案是使用客户端可以信任的证书配置服务器,然后事情就会正常工作

    在本地工作的开发时,如果您想使用自签名证书,那么您可以将其安装为根 CA,一切都会按预期工作。

    一旦您到了无法控制客户的阶段,这显然不是您可以要求人们做的事情。然后唯一要做的就是使用客户端可以信任的证书正确配置服务器,使用像letsencrypt这样的东西来生成证书。

    【讨论】:

    • 我们在 IIS 中配置的任何证书都需要安装在服务器上(用于信任部分)。这对我有用。
    【解决方案2】:

    以下解决方案适用于 RestSharp 库

    var restClient = new RestClient(baseUrl);
    restClient.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
    

    【讨论】: