首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略带有XmlTextReader https请求的无效SSL (版本3)证书

忽略带有XmlTextReader https请求的无效SSL (版本3)证书
EN

Stack Overflow用户
提问于 2012-07-13 11:09:04
回答 3查看 3K关注 0票数 2

我正在尝试从https web请求创建一个XML文档,但是当站点有一个无效的证书时,我很难让它工作。我想让我的申请不关心证书,我希望它生活在没有恐惧的边缘!

下面是我拥有的初始代码,我以前曾多次使用这些代码从标准的http (非SSL)请求中获得我想要的:

代码语言:javascript
复制
XmlDocument xml = new XmlDocument();
XmlTextReader reader = new XmlTextReader("https://www.example.com");
xml.Load(reader);

由于站点具有无效的SSL证书,我现在收到以下错误:

请求被中止:无法创建SSL/TLS安全通道。

现在,我已经做了我的谷歌,并尝试了许多有希望的解决方案,但这似乎是没有帮助。

有一次我试过here on SO看起来不错,但似乎不起作用,我在上面的代码之前添加了“接受答案”一行代码,因为它不太清楚它应该去哪里。

如果有什么不同,我的代码在类库中,我正在通过控制台应用程序进行测试。我也在使用.Net 4。

以下是我最近的尝试(不起作用):

代码语言:javascript
复制
XmlDocument xml = new XmlDocument();

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback((s, ce, ch, ssl) => true);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlCommand);
request.Credentials = CredentialCache.DefaultCredentials;

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    using (Stream receiveStream = response.GetResponseStream())
    {
        XmlTextReader reader = new XmlTextReader(receiveStream);
        xml.Load(reader);
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-13 12:06:59

好的,我找到了解决办法。我们选择了尝试禁用服务器上的SSL进行测试,并注意到它正在使用SSL 3。在另一次谷歌搜索之后,我找到了一些额外的代码来修复这个问题(对于设置SecurityProtocolType很重要):

代码语言:javascript
复制
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback((s, ce, ch, ssl) => true);

XmlDocument xml = new XmlDocument();
XmlTextReader reader = new XmlTextReader(urlCommand);
xml.Load(reader);
票数 2
EN

Stack Overflow用户

发布于 2012-07-13 11:23:42

嗯,也许XmlTextReader使用了一种不同的方式访问HTTPS。

尝试使用HttpWebRequest发出web请求,并将response.GetResponseStream()传递给XML文本阅读器(并将ServicePointManager.ServerCertificateValidationCallback覆盖保留在有它的位置)

票数 0
EN

Stack Overflow用户

发布于 2021-06-18 13:39:44

造成此错误的原因:

您的网站上没有使用有效的客户端证书。

您可以在下面尝试

  • 为了快速转身,您可以尝试使用_ *访问URL -这不是推荐的,但是对于测试您可以尝试。

  • 您没有使用有效的客户端证书,因此可以编写如下所示的内容:

代码语言:javascript
复制
- Add this line where you are requesting to download XML or making some http request.

//添加模拟证书验证

ServicePointManager.ServerCertificateValidationCallback =新RemoteCertificateValidationCallback(OnValidationCallback);

  • 添加以下作为一种全局方法: 公共静态bool OnValidationCallback(对象发送方、X509Certificate证书、X509Chain链、SslPolicyErrors错误){返回true;}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11469309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档