『QQ:1353814576』

HttpClient请求域名报错 The SSL connection could not be established, see inner exception.


碰到的情况:

The SSL connection could not be established, see inner exception.

这两天发现博客的网站分类目录自助添加功能验证域名可访问性的时候报了上面的异常,做了各种修改都没解决掉,很无语的就是本地调试和正常部署后访问,可一旦放到服务器上运行就报错


试了网上的几种解决办法

  1. 第一种: 基于linux服务器
openssl version -a  
OpenSSL 1.0.2k-fips  26 Jan 2017  
built on: reproducible build, date unspecified  
platform: linux-x86_64  
options:  bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)  
compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM  
OPENSSLDIR: "/etc/pki/tls"
engines:  rdrand dynamic

可惜我是windows服务器 不适合这个方式

  1. 第二种: 基于.net Framework (在.net core框架下貌似无效)
ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

  1. 第三种: 基于.net core

第二种方式

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;
         }
}


总结

以上三种经过测试均不成功 最终没办法就妥协了 只要报错信息含有SSL就标记特殊处理
猜测:可能是和服务器有关系,换了几台本地电脑测试均可正常访问不报错,还有个很奇怪的情况就是同一个域名, 通过服务器访问和本地访问显示的结果不是同一个页面被重定向了, 可能阿里云的ip被对方做了标记 特殊处理了。