如何使用 IWinHttpRequest 忽略无效证书?

Posted

技术标签:

【中文标题】如何使用 IWinHttpRequest 忽略无效证书?【英文标题】:How to ignore invalid certificates with IWinHttpRequest? 【发布时间】:2012-08-18 07:56:50 【问题描述】:

我正在使用 Microsoft 的 WinHttpRequest COM 对象请求带有无效证书的网页:

IWinHttpRequest http = new WinHttpRequest();
http.Open("GET", url, false);
http.Send(null);

除了对Send的调用抛出异常:

0x80072F0D - The certificate authority is invalid or incorrect

我如何告诉WinHttpRequest 我不在乎,我希望它检索我要求的页面?

【问题讨论】:

【参考方案1】:

解决方法是忽略four kinds of SSL errors:

//Code is released into the public domain. No attribution required. 
IWinHttpRequest http = new WinHttpRequest();
http.Open("GET", url, false);

//ignore any TLS errors 
option = http.Option[WinHttpRequestOption_SslErrorIgnoreFlags];
options = options | SslErrorFlag_Ignore_All;
http.Option[WinHttpRequestOption_SslErrorIgnoreFlags] = option; 

    //SslErrorFlag_Ignore_All                                  0x3300
    //Unknown certification authority (CA) or untrusted root   0x0100
    //Wrong usage                                              0x0200
    //Invalid common name (CN)                                 0x1000
    //Invalid date or certificate expired                      0x2000

http.Send(null);

【讨论】:

这似乎不适用于 VB6,我仍然得到与 OP 相同的错误。

以上是关于如何使用 IWinHttpRequest 忽略无效证书?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 getopts 忽略无效参数并继续解析?

如何忽略无效的 TLS

如何忽略 Guzzle 5 中的无效 SSL 证书错误

警告:忽略无效的分发 -ip (c:\python39\lib\site-packages) 我该如何解决这个问题,这是啥意思? [复制]

如何通过忽略每次按键上的无效字符来使文本类型的输入元素只接受一个数值(十进制、正数和负数)?

如何在雪花中使用 parse_xml 忽略损坏的 xml 行