之前遇到一個問題
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 路徑
2、然后把 CentOS 默認的 openssl CA證書拷貝過來。
$ cp /etc/pki/tls/cert.pem /usr/
local
/openssl/