当前系统环境:CentOS 7 x64. dotnet 2.0. 不管是 ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true; 还是: HttpClient httpClient = new HttpClient(new HttpClientHandler() { ServerCertificateCustomValidationCallback = (a, b, c, d) => true });
都会发生错误: 错误信息大致如下: (The handler does not support custom handling of certificates with this combination of libcurl (7.29.0) and its SSL backend ("NSS/3.28.4").) ---> System.PlatformNotSupportedException: The handler does not support custom handling of certificates with this combination of libcurl (7.29.0) and its SSL backend ("NSS/3.28.4"). at System.Net.Http.CurlHandler.SslProvider.SetSslOptionsForUnsupportedBackend(EasyRequest easy, ClientCertificateProvider certProvider) at System.Net.Http.CurlHandler.SslProvider.SetSslOptions(EasyRequest easy, ClientCertificateOption clientCertOption)
解决方案:
# yum update(可选) # yum install openssl-devel gcc #安装openssl和gcc
# 安装指定版本的curl # wget https://curl.haxx.se/download/curl-7.55.1.tar.gz # tar -zxf curl-7.55.1.tar.gz # cd curl-7.55.1 # ./configure --prefix=/usr/local/curl/ --without-nss --with-ssl=/usr/local/ssl/ # make # make install
#备份原来的curl mv /usr/bin/curl /usr/bin/curl.bak
#将安装的curl 创建软连 ln -s /usr/local/curl/bin/curl /usr/bin/curl # curl --version #差不多输出下面的内容 #curl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2k zlib/1.2.7
#增加lib搜索目录 # vi /etc/ld.so.conf #增加 # /usr/local/curl/lib # cat /etc/ld.so.conf 差不多下面这样子 # include ld.so.conf.d/*.conf /usr/local/curl/lib
# 重新load配置 # ldconfig