NetCore HttpClient The SSL connection could not be established, see inner exception


之前遇到一個問題

 

https://www.cnblogs.com/leoxjy/p/10201046.html

 

在centos 7.x  HttpClient訪問會出問題  The SSL connection could not be established, see inner exception

最后徹底解決是進入容器docker

那么 最近又翻牆搜到一個解決方案 可以systemctl 運行的時候也不會 SSL

上代碼

       var httpClientHandler = new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true
            };
            using (HttpClient client = new HttpClient(httpClientHandler))
            {
                string url = WeiXinSettings.GetJscode2Session(code);

                var result = await client.GetAsync(url);

                if (result.IsSuccessStatusCode)
                {
                    string str = await result.Content.ReadAsStringAsync();

                    return str;
                }
            }

 

解決辦法2

  修改centos的環境變量 DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0

解決辦法3

  

    通過在netcore. runtimeconfig.template.json配置文件中定義 System.Net.Http.UseSocketsHttpHandler 開關:

   
"runtimeOptions": {
  "configProperties": {
      "System.Net.Http.UseSocketsHttpHandler": false
  }
}

  此方法解決所有不需要證書訪問的通訊 如果需要證書進行https訪問 就不行了

 

解決方法 4 

  安裝 OpenSSL

 

1.下載 OpenSSL:

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
2.解壓 OpenSSL:

tar -xzvf openssl-1.0.2l.tar.gz
3.進入 OpenSSL目錄:

cd openssl-1.0.2l
4.配置並編譯 OpenSSL:

./config --shared
make && make install
5.下載 curl 庫:

wget https://curl.haxx.se/download/curl-7.55.1.tar.gz
6.解壓 curl 庫:

tar -xzvf curl-7.55.1.tar.gz
7.進入 curl 目錄:

cd curl-7.55.1
8.設置動態庫路徑:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib
9.配置並編譯 curl:

./configure --prefix=/usr/local/curl/ --without-nss --with-ssl=/usr/local/ssl/
make && make install
10.備份默認的 curl 二進制文件

mv /usr/bin/curl /usr/bin/curl.bak
11.做一個新的 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.2l
Release-Date: 2017-08-14
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets HTTPS-proxy

 

1、查看 OPENSSLDIR 路徑

$ openssl version -a

2、然后把 CentOS 默認的 openssl CA證書拷貝過來。

$ cp /etc/pki/tls/cert.pem /usr/ local /openssl/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM