【问题标题】:Curl gives error on XP, when downloading via TLS通过 TLS 下载时,Curl 在 XP 上出现错误
【发布时间】:2016-11-12 12:25:30
【问题描述】:

我正在使用 curl 下载图像。在 win7 上它可以工作,但在 XP 上它会给出一条消息:

(35) schannel:下一个 InitializeSecurityContext 失败:SEC_E_ILLEGAL_MESSAGE (0x80090326) - 当收到致命的 SSL/TLS 警报时,通常会发生此错误 (例如握手失败)。 Windows 系统甚至可能提供更多详细信息 记录。

我已阅读互联网上的所有可用信息,发现它与 Windowx XP TLS API 函数中的错误有关。执行中一定有bug。 虽然谷歌浏览器如何访问这个资源?它是使用自己的 TLS 函数还是使用 Windows API 进行 TLS 协商? 这是一个例子:

curl -L -o "sub.jpg" "https://icdn.lenta.ru/images/2016/11/12/13/20161112133708253/pic_b3e542f41dea3569d80375712d111d6d.jpg"

【问题讨论】:

    标签: ssl curl


    【解决方案1】:

    Windows XP 上的 TLS 堆栈非常旧,不支持 TLS 1.2 或 SNI,不支持 ECDHE,对 DHE 的支持非常有限。鉴于错误消息 curl 使用此堆栈(schannel)。在使用原生 TLS 堆栈 SChannel 的 XP 上,您可能会遇到相同的错误。事实上,SSLLabs report 指出了 IE8 在 XP 上的问题。从这份报告中还可以看到站点支持的密码,如果您将其与ciphers offered by IE8/XP 和 curl/SChannel 进行比较,您会发现没有重叠,即没有共享密码。

    与此相反,Firefox 和 Chrome 都不使用本机 TLS 堆栈,而是使用它们自己的 (NSS) 来提供现代功能。这解释了为什么这些与网站一起使用。

    【讨论】:

    • Steffen 感谢您的回答。我在怀疑这样的事情。我将使用 openssl 后端重新编译 curl。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2016-01-04
    • 2011-05-20
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多