问题

使用 HTTP Client 请求 HTTPS 的 API 时出现 The certificate cannot be verified up to a trusted certification authority 异常,并且证书已经传入。

下面就是问题代码:

public class Program{public static void Main(string[] args){var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/services/xxxx?wsdl";

var handler = new HttpClientHandler        {            ClientCertificateOptions = ClientCertificateOption.Manual,            ClientCertificates =            {new X509Certificate2(@"E:\cert\rootTrust.cer","11111111"),new X509Certificate2(@"E:\cert\middleTrust.cer","11111111"),new X509Certificate2(@"E:\cert\wskey.pfx","ws654321")            }        };

var webRequest = new HttpClient(handler);var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult();        Console.WriteLine(result);    }}

原因

因为在发出 HTTPS 请求的时候,HttpClient 都会检查 SSL 证书是否合法。如果不合法的话,就会导致抛出异常信息,而对方给出的证书是自签发的测试接口的证书,所以不是一个合法的 SSL 证书。

解决

在 HttpClientHandler 当中会有一个 ServerCertificateCustomValidationCallback 事件,该事件用于判定证书验证是否通过。我们可以挂接该事件,然后逻辑编写为直接返回 true 结果,这样就会忽略掉证书异常的情况。

最新的代码如下:

public class Program{public static void Main(string[] args){var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/services/xxxx?wsdl";

var handler = new HttpClientHandler        {            ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true,             ClientCertificateOptions = ClientCertificateOption.Manual,            ClientCertificates =            {new X509Certificate2(@"E:\cert\rootTrust.cer","11111111"),new X509Certificate2(@"E:\cert\middleTrust.cer","11111111"),new X509Certificate2(@"E:\cert\wskey.pfx","ws654321")            }        };

var webRequest = new HttpClient(handler);var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult();        Console.WriteLine("xx");    }}

原文地址:https://www.cnblogs.com/myzony/p/10482113.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.NET Core 使用 HttpClient SSL 请求出错的解决办法相关推荐

  1. .net core 1.1 mysql_Asp.net Core 1.1 升级后操作mysql出错的解决办法

    这篇文章主要介绍了Asp.net Core 1.1 升级后操作mysql出错的解决办法,需要的朋友可以参考下 遇到问题 core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到Miss ...

  2. pip install skimage安装skimage库出错的解决办法

    pip install skimage安装skimage库出错的解决办法 安装skimage库出错 pip install skimage 解决办法: pip install scikit-image

  3. 【原创】vegas提示NTDLL.DLL出错的解决办法

    ntdll.dll是什么?ntdll.dll出错怎么办?ntdll.dll位置在哪?ntdll.dll下载之后放在哪里?请看本文详解.ntdll.dll下载地址:点击下载 ntdll.dll文件分析 ...

  4. iis7mysql 链接不上_Win7 64位IIS7出现数据库链接出错的解决办法

    这个问题绝对困扰了大部分菜鸟网友,这里结合本人经验给大家归纳为两点,对,只需要两点,网上那么多复杂的办法都是多余的,只需要两点,绝对搞定一切问题. 方法一:开启父路径 在IIS7中ASP默认情况下,& ...

  5. win 2008 64位IIS7出现数据库链接出错的解决办法

    法一:开启父路径 在IIS7中ASP默认情况下,"父路径"是没有启用的,我们必须手动开启"父路径",选择"True",搞定"父路径 ...

  6. jenkins 忘记密码或认证配置出错后解决办法

    背景 我们测试环境的 Jenkins 是通过 Crowd 进行统一登录认证,授权策略采用"项目矩阵授权策略",运维同事在配置Role-Based Strategy时出错,导致所有用 ...

  7. springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法

    springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法 参考文章: (1)springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出 ...

  8. win10中conda activate激活环境出错的解决办法

    win10中conda activate激活环境出错的解决办法 报错原因 解决方法 今天在运行代码的时候出现了以下问题,报错 CommandNotFoundError: Your shell has ...

  9. Ajax请求session超时解决办法

    Ajax请求session超时解决办法 问题描述 通过ajax发送请求,被后台过滤器或者拦截器拦截的时候,如果session超时,不会直接跳转到登录页面. 解决方案 在过滤器或者拦截器中设置respo ...

最新文章

  1. OpenCV4中的非典型深度学习模型
  2. 【连载】高效人士的116个IT秘诀(第2版)——秘诀24为你的时间建一个构造图
  3. FPGA中block ram和distributed ram的区别
  4. Python itertools模块
  5. 新无限天空服务器,天空魔域3782版最新服务端(含网站程序)
  6. html文件语言表示网页标题,HTML网页基本结构(HTML文件、编程语言)——十一号笔记...
  7. python入门指南_Python中的逻辑门–入门指南
  8. 虚伪,不只是形容一个人
  9. C51单片机引脚名词英文全称
  10. 什么是摄像头自带wifi热点
  11. 强大的实用的mac软件卸载应用软件,彻底清除App残留
  12. php生成字母头像,Identicon:实现根据用户账号生成像素头像php版
  13. 数论——佩尔方程变量分解
  14. html页面标尺,canvas实现标尺.html
  15. 投稿Springer旗下Natural Hazard的时间记载
  16. Win10删除IE图标
  17. 2014英菲尼迪的万人盛典一线巨星在华演出全程记录
  18. 人大金仓数据库备份应用sys_dump的使用
  19. 为什么说纯电动车是汽车的未来?
  20. Opencv教程:人工智能图像处理入门案例实战

热门文章

  1. Linux 练习题-3文件与磁盘 问答
  2. IE8采用IE7模式
  3. libgdx游戏引擎开发笔记(十)SuperJumper游戏例子的讲解(篇四)---- 主游戏界面内部框架编写...
  4. 2014 网选 上海赛区 hdu 5047 Sawtooth
  5. LeetCode 3_Longest Substring Without Repeating Characters
  6. 利用Xshell实现非对称秘钥对安全登陆linux服务器(Centos、Ubuntu)
  7. C++程序运行时内存布局之--无继承情况下的虚函数
  8. 爱情三十一课,先信自己
  9. Serilog 日志框架如何自动删除超过 N 天的日志 ?
  10. 怎么才能把项目做烂?!