首页 > 其他分享 >HttpClient Https请求 基础连接已经关闭,发送时发生错误

HttpClient Https请求 基础连接已经关闭,发送时发生错误

时间:2023-08-04 19:01:26浏览次数:63  
标签:TLS 证书 发送 client Https new 服务端 HttpClient

可能有以下几个原因:

  1. 证书问题:服务端证书无效或者客户端不信任服务器证书会导致握手失败。你需要检查服务端证书是否有效,是否由受信任的证书颁发机构 (CA) 签署。
  2. TLS 版本不兼容:服务端只支持较新版本的TLS,而客户端使用的 .NET 版本较旧,其中包含的 TLS 版本与服务端不兼容。尝试升级 .NET 版本或者配置 HttpClient 使用较新的 TLS 版本来解决该问题。
  3. 代理设置问题:如果你的应用程序通过代理进行网络连接,可能是代理设置导致了问题。尝试通过配置 HttpClientHandler 的 Proxy 属性正确设置代理信息。
  4. 访问权限问题:若服务端需要客户端提供特定证书或通过证书进行身份验证,你可能需要提供正确的证书或设置 HttpClient 的证书验证选项。


如果从代码上考虑有以下几种方式:

  1. 配置 HttpClientHandler,用TLS 1.2
var handler = new HttpClientHandler();
handler.SslProtocols = SslProtocols.Tls12; // 启用TLS 1.2
var client = new HttpClient(handler);
  1. 配置 HttpClient,跳过证验证
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; // 跳过证书验证
  1. 配置 HttpClient,使用指定证书进行服务器身份验证
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var certificate = new X509Certificate2("path/to/c");
clientHandler.ClientCertificates.Add(certificate); // 导入证书

其中"path/to/c"是证书的文件路径,建议使用绝对路径


以上内容均为ChatGpt工具解答,尚未能实际情况中遇到解决

截图为HttpWebRequest方式下的解决办法


HttpClient Https请求 基础连接已经关闭,发送时发生错误_HTTP

标签:TLS,证书,发送,client,Https,new,服务端,HttpClient
From: https://blog.51cto.com/u_13160626/6966351

相关文章

  • 浅谈-HttpSession session = request.getSession(false)
    当使用request.getSession(false)方法时,如果当前请求没有关联的会话,则不会创建新的会话,而是返回null。这意味着,如果当前客户端没有携带有效的会话标识符(如JSESSIONID),或者会话已过期或被销毁,则request.getSession(false)方法将返回null。下面是一个示例来解释这个方法的用......
  • 什么是猴子补丁,有什么用途,什么是反射,python中如何使用反射,http和https的区别
    1什么是猴子补丁,有什么用途猴子补丁:动态修改或扩展代码的技术,通在不修改源代码的情况下,改变代码的执行方式或增加功能 -MonkeyPatching是在运行时(runtime)动态替换属性(attributes)或方法 -Python的类是可变的(mutable),方法(methods)只是类的属性(attributes);这允许我......
  • asp.net core之HttpClient
    本文介绍了ASP.NETCore中的HttpClient和HttpClientFactory的作用、用法以及最佳实践。通过示例代码的展示,读者可以了解如何使用HttpClient发送HTTP请求并处理响应,以及如何使用HttpClientFactory来解决HttpClient的一些问题,如资源泄漏和性能问题。同时,本文还强调了HttpClientFacto......
  • nginx反向代理http转https报502bad gateway
    参考:https://www.jianshu.com/p/999ac06e3934https://blog.csdn.net/liuxiao723846/article/details/127749786需求是从内网访问nginx,再反向代理到外网一个https网站azfj.sonli.cn在nginx的http模块配置了server,listen,location,proxy_pass访问代理时始终报错502badgateway最终请教......
  • nginx使用openssl自签名,实现https登录
    1.确认nginx是否已安装SSL模块查验方法:进入sbin目录,执行以下语句,显示结果如标记所示则表示安装成功./nginx-V 2.确认系统以安装SSL工具,开始制作证书选择一个存放证书的路径,执行以下语句即可:(1)生成密钥,得到文件private.keyopensslgenpkey-algorithmRSA-outprivate.ke......
  • syslog日志发送、接收与展示
    三、展示1.tar-zxvf loganalyzer-3.6.0.tar.gz2. yum -y install httpdphp*cp -r src/* /var/www/html/loganalyzercp -r contrib/* /var/www/html/loganalyzerchown -R daemon.daemon /var/www/html/loganalyzer 通过web向导安装loganalyzer前,......
  • SMTP 通过 ssh 通道发送垃圾邮件
    通过SSH隧道传输SMTP根据设计,我们不允许校外机器使用我们的SMTP服务器。如果我们允许它,我们将允许任何和所有使用我们的SMTP服务器来分发垃圾邮件。但是也可以通过我们的SMTP服务器发送邮件,这种机制称为SMTP隧道。Linux说明1.在Linux机器上安装SSH(默认情况下应该安装)。2.运行以下命......
  • RestTemplate发送HTTP、HTTPS请求
     RestTemplate使用总结 场景:认证服务器需要有个httpclient把前端发来的请求转发到backendservice,然后把backendservice的结果再返回给前端,服务器本身只做认证功能。遇到的问题:长连接以保证高性能。RestTemplate本身也是一个wrapper其底层默认是 SimpleClientHtt......
  • SpringBoot 整合 redis-阿里云发送短信
    pom<dependencies><!--阿里云短信--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.16</version>......
  • 中间人攻击 http与https的区别
    由一个视频引发的问题 https://v.douyin.com/iJJ9n2r7/ 中间人攻击  由于HTTP本身不具备加密的功能,所以也无法做到对通信整体(使用HTTP协议通信的请求和相应的内容)进行加密,即HTTP报文使用明文(未经过加密的报文)方式发送。(对应于信件使用的文字不加密)抓包:可以得到cookie......