如何在CentOS上忽略.Net-Core 2中的SSL证书验证

时间:2017-09-12 13:54:08

标签: c# ssl asp.net-core centos httpclient

我正在使用 .NetCore 2.0

构建一个控制台应用程序

此应用程序正在为运行“https”的服务器进行REST调用,但他的证书无效。为了支持此问题,我覆盖了“ ServerCertificateCustomValidationCallback ”功能:

        HttpClientHandler httpClientHandler;

        if (IgnoreSslErrors)
        {
            httpClientHandler = new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (message, certificate2, chain, errors) =>
                {
                    Log.Warn($"Invalid SSL/TLS server certificate: {errors}");
                    return true;
                }
            };
        }
        else
        {
            httpClientHandler = new HttpClientHandler();
        }
        HttpClient httpClient = new HttpClient(httpClientHandler, true);

此.net Core应用程序在Windows 10上运行良好。但是当我在CentOS 7(1511版本)上运行它时,我收到此错误:

  

System.PlatformNotSupportedException:处理程序不支持使用libcurl(7.29.0)及其SSL后端(“NSS / 3.19.1 Basic ECC”)的组合自定义处理证书。      在System.Net.Http.CurlHandler.SslProvider.SetSslOptionsForUnsupportedBackend(EasyRequest easy,ClientCertificateProvider certProvider)      在System.Net.Http.CurlHandler.SslProvider.SetSslOptions(EasyRequest easy,ClientCertificateOption clientCertOption)      在System.Net.Http.CurlHandler.EasyRequest.InitializeCurl()      在System.Net.Http.CurlHandler.MultiAgent.ActivateNewRequest(EasyRequest easy)   ---从抛出异常的先前位置开始的堆栈跟踪结束---

.NetCore中有错误吗?

我应该更新CentOS中的一些库吗?我可以使用可在CentOS中使用的替代代码吗?

1 个答案:

答案 0 :(得分:0)

通过下载更新版本的" libcurl-openssl "

在CentOS解决了这个问题
'yum install libcurl-openssl-7.43.0-1.1.x86_64.rpm'

然后重定向PowerShell以发现新的动态库。

set LD_LIBRARY_PATH=/opt/shibboleth/lib64/:$LD_LIBRARY_PATH

*如果您将该应用作为服务运行, 确保将此添加到" .service"文件在" [服务]"部分:

Environment=LD_LIBRARY_PATH=/opt/shibboleth/lib64/:$LD_LIBRARY_PATH

可以在这些帖子中找到更详细的信息:

https://issues.couchbase.com/browse/NCBC-1296 https://github.com/PowerShell/PowerShell/issues/2511