服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

详解.NET Core 使用HttpClient SSL请求出错的解决办法

2019-06-19 17:15myzony ASP.NET教程

这篇文章主要介绍了.NET Core 使用HttpClient SSL请求出错的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

问题

使用 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");
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

延伸 · 阅读

精彩推荐
  • ASP.NET教程ASP.NET 重定向的几种方法小结

    ASP.NET 重定向的几种方法小结

    页面重定向的使用很多,实现方法也有不同,自己也试过几种,现在总结一下。...

    服务器之家2352019-06-18
  • ASP.NET教程Asp.net core中实现自动更新的Option的方法示例

    Asp.net core中实现自动更新的Option的方法示例

    这篇文章主要介绍了Asp.net core中实现自动更新的Option的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    zhouandke1202019-06-19
  • ASP.NET教程asp.net上传Excel文件并读取数据的实现方法

    asp.net上传Excel文件并读取数据的实现方法

    这篇文章主要给大家介绍了关于asp.net上传Excel文件并读取数据的实现方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...

    willingtolove4282019-06-19
  • ASP.NET教程AjaxControlToolKit 显示浏览者本地语言的方法

    AjaxControlToolKit 显示浏览者本地语言的方法

    使用最新版的AjaxControlToolKit控件 1.首先要使用最新版的AjaxControlToolKit控件 2.在网页的Page标签中加入:UICulture=auto设定 3.为ScriptManager加入以下的设定: EnableScriptGlobalization=true EnableScriptLocalization=true 4.看一下是不是已经OK了...

    网络4032019-06-18
  • ASP.NET教程浅析ASP.NET生成随机密码函数

    浅析ASP.NET生成随机密码函数

    在开发需要用户注册后才能使用提供的各项功能的应用程序时,在新用户提交注册信息后,较常见的做法是由程序生成随机密码,然后发送密码到用户注册时填写的电子信箱,用户再用收到的密码来激活其帐户。...

    脚本之家4812019-06-16
  • ASP.NET教程.net core中Quartz的使用方法

    .net core中Quartz的使用方法

    这篇文章主要介绍了.net core中Quartz的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    ♀影☆响2902019-06-19
  • ASP.NET教程ASP.NET 2.0写无限级下拉菜单

    ASP.NET 2.0写无限级下拉菜单

    ASP.NET 2.0提供了一个Menu 类,可以方便地创建水平或者垂直方向的下拉菜单,下面就是一个例子:...

    ASP.NET之家2792019-06-18
  • ASP.NET教程.NET Framework各版本(.NET2.0 3.0 3.5 4.0)区别

    .NET Framework各版本(.NET2.0 3.0 3.5 4.0)区别

    本文主要介绍.NET各个版本之间的区别,以帮助新手朋友选择适合的.NET Framework的版本进行开发。...

    anroy8882132019-06-19