在.NET Core 2.2中使用SocketsHttpHandler并忽略证书验证

7

使用 HttpClientHandler,我们能够设置服务器验证回调并返回 true(通过编写或使用 DangerousAcceptAnyServerCertificateValidator)。当我将我的 HttpClient 切换到使用 SocketsHttpHandler 并升级到 .NET Core 2.2 后,如何确保我也可以绕过此验证?这是默认行为吗?目前我找不到关于此主题的太多信息,并且我将部署到一个环境中,我想避免进行破坏性更改。


2
我相信在SocketsHttpHandler.SslOptions.RemoteCertificateValidationCallback下有同样的选项可用。 - Mike Zboray
1
我相信你是正确的。几天后,我会在生产环境中部署并测试是否有效(这是唯一出现此问题的环境)。你可以现在将其作为答案添加,也可以等待我验证后再添加。 - djsoteric
1个回答

10

@djsoteric我也遇到了完全相同的问题,我是这样解决的

public static HttpClient CreateHttpClient()
{
    var sslOptions = new SslClientAuthenticationOptions
    {
        // Leave certs unvalidated for debugging
        RemoteCertificateValidationCallback = delegate { return true; },
    };

    var handler = new SocketsHttpHandler()
    {
        SslOptions = sslOptions,
    };

    return new HttpClient(handler);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接