【问题标题】:HttpClient Exception When Requesting from a TLS 1.2 Only Endpoint从仅 TLS 1.2 端点请求时出现 HttpClient 异常
【发布时间】:2016-05-07 15:33:34
【问题描述】:

有谁知道如何让 HttpClient 与仅支持 TLS 1.2 的站点一起工作。我已通过 SSL Labs https://www.ssllabs.com/ssltest/analyze.html?d=sandbox.paypal.com 验证,paypal 已在其沙盒网站上关闭了除 TLS 1.2 之外的所有功能。

当我运行以下代码时,我收到一条异常消息“根据验证过程,远程证书无效。”

var client = new HttpClient();
var content = client
    .GetAsync("https://sandbox.paypal.com/")
    .Result;

【问题讨论】:

  • 您使用的是什么版本的 .NET? 4.5 增加了对 TLS 1.2 的支持,并且会自动启动。 msdn.microsoft.com/en-us/library/…
  • 你是对的,马特。我实际上在 4.6 上,如果我检查 System.Net.ServicePointManager.SecurityProtocol,它设置正确。我的问题是 sandbox.paypal.com 上的证书抛出了一个错误,我没有在其他仅 TLS1.2 的网站上获得,从而混淆了我得到的结果。
  • 另外值得注意的是,默认的 SecurityProtocol 是 TLS1|SSL3 直到 .NET 4.5.2。直到 4.6 才默认为 TLS11|TLS12。

标签: c# .net tls1.2


【解决方案1】:

他们的证书对www.sanbox.paypal.com 有效,但对sandbox.paypal.com 无效。将“www”添加到请求 URI 或使用自定义证书验证回调,例如:

ServicePointManager.ServerCertificateValidationCallback =
    (sender, cert, chain, sslPolicyErrors) => true;

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2020-01-13
    • 1970-01-01
    • 2023-04-06
    • 2016-05-09
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多