System.Net.WebException:错误:TrustFailure(身份验证失败,请参阅内部异常。)

Posted

技术标签:

【中文标题】System.Net.WebException:错误:TrustFailure(身份验证失败,请参阅内部异常。)【英文标题】:System.Net.WebException: Error: TrustFailure (Authentication failed, see inner exception.) 【发布时间】:2020-04-05 09:01:31 【问题描述】:

向 HTTPS 服务器发出请求时,出现以下错误。请求适用于 HTTP。

---> System.Security.Authentication.AuthenticationException:身份验证失败,请参阅内部异常。 ---> Mono.Btls.MonoBtlsException: Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

我已在 android 设置中将 HTTPClientHandler 设置为 Android,并将 TLS/SSL 实施设置为 Native TLD 1.2+。

【问题讨论】:

您使用的是自签名证书吗? 我不知道它是什么。你能解释一下吗? 自签名证书是未经证书颁发机构 (CA) 签名的证书。 :en.wikipedia.org/wiki/Self-signed_certificate 我没有自签名任何证书。我实际上做了 SitePointManager hack 以允许 HTTPS 请求工作正常,但这次 System.Net.HTTPWebRequest 失败了。 那么很可能您在服务器上缺少中间证书,它未配置为转发秘密 HTTPS 等...此外,如果您已正确安装和配置,为什么还要手动绕过验证过程证书? 【参考方案1】:

这就是我使用WebClient 的方法,而不仅仅是添加ServerCertificateValidationCallback

var uri = new UriBuilder("https://url/v3/0").Uri;
var client = new WebClient();
ServicePointManager.ServerCertificateValidationCallback = new
    RemoteCertificateValidationCallback
    (
       delegate  return true; 
    );    
var content = client.DownloadString(uri);

【讨论】:

【参考方案2】:

我通过像这样向 HttpWebRequest 对象添加 ServerCertificateCustomValidationCallback 属性解决了这个问题。

HttpWebRequest request = new HttpWebRequest(new Uri());
request.ServerCertificateCustomValidationCallback = delegate return true;

【讨论】:

感谢分享。不要忘记接受答案。 此方法可能有效,但不安全。只是说.. 你确定HttpWebRequest这种构造函数?

以上是关于System.Net.WebException:错误:TrustFailure(身份验证失败,请参阅内部异常。)的主要内容,如果未能解决你的问题,请参考以下文章

System.Net.WebException:无法解析远程名称:

System.Net.WebException:操作已超时

System.Net.WebException HTTP 状态码

System.Net.WebException:请求被中止:请求被取消

ArangoDB-NET 错误:System.Net.WebException:'不知道这样的主机 不知道这样的主机'

System.Net.WebException 的 Powershell 处理