XmlDocument.Load:无法创建SSL/TLS安全通道

本文关键字:TLS 安全 通道 SSL 创建 Load XmlDocument | 更新日期: 2023-09-27 18:28:21

我的应用程序中到处都是类似的简单代码:

new XmlDocument().Load("https://mybookingpal.com/xml/rest/product/organization/5?pos=" + "a3a2e74b809e0e87");

以上是新域名,旧域名是:

new XmlDocument().Load("https://razor-cloud.com/xml/rest/product/organization/5?pos=" + "a3a2e74b809e0e87");

您可以尝试这两个URL,并看到它们工作良好/产生相同的XML结果。

SSL中可能发生了一些变化,导致.Load()无法正常工作。我有两个问题:

  1. 是什么导致了故障,所以我可以尝试在一个地方修复它(在API服务器上)
  2. 如何修复客户端代码

XmlDocument.Load:无法创建SSL/TLS安全通道

我遇到了同样的问题。事实证明,这是由中定义的xml DTD引起的

<!DOCTYPE>

检查xml文件头

<!DOCTYPE xxx SYSTEM "url">

复制url并粘贴到浏览器中,然后运行Fiddler来查看它使用的是什么协议。

我的情况是,我运行一个本地服务器来解析一个xml文件,该文件使用第三方的DTD。我的本地服务器运行在Tls11或Tls12上,而第三方DTD(url)只能通过Ssl或Tls10进行通信。所以它无法握手。

我的解决方案很简单,只需添加以下行作为临时修复:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;

这看起来和我遇到的问题一样,与此链接相同:表单身份验证和XmlDocument.Load

使用表单身份验证和Https登录后,我预计不需要其他身份验证。但是,new XmlDocument().Load()会再次加载登录页。由于这个页面是html,它抛出了一个错误xml格式的异常。