【问题标题】:XmlDocument.Load: Could not create SSL/TLS secure channelXmlDocument.Load:无法创建 SSL/TLS 安全通道
【发布时间】:2014-12-26 07:51:35
【问题描述】:

我的应用程序中散布着与此类似的简单代码:

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. 如何修复客户端代码?

【问题讨论】:

  • 您认为 SSL 发生了一些变化,但您并没有真正告诉我们原因。调用 XmlDocument.Load() 时会发生什么?您看到错误了吗?
  • @sevzas 错误消息在帖子的标题中。我相信这是因为 SSLv3 未启用(仍有待确认)。

标签: c# .net ssl httpwebrequest xmldocument


【解决方案1】:

我有同样的问题。事实证明这是由

中定义的 xml DTD 引起的
<!DOCTYPE>

检查xml文件头

<!DOCTYPE xxx SYSTEM "url">

复制网址并粘贴到浏览器中并运行 Fiddler 以查看它正在使用的协议。

我的情况是,我正在运行本地服务器来解析使用来自第 3 方的 DTD 的 xml 文件。我的本地服务器在 Tls11 或 Tls12 上运行,而第 3 方 DTD(网址)只能通过 Ssl 或 Tls10 进行通信。所以握手失败。

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

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

【讨论】:

    【解决方案2】:

    这看起来与我遇到的问题相同,与此链接相同: Form Authentication and XmlDocument.Load

    使用表单身份验证和 Https 登录后,我希望不需要其他身份验证。但是, new XmlDocument().Load() 会再次加载登录页面。由于这个页面是html,所以会抛出xml格式不正确的异常。

    【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2017-02-10
    • 2017-08-22
    • 2016-08-03
    • 2018-06-17
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多