2016-11-12 88 views
0

我正在使用curl下载图像。在它的工作原理,但在XP WIN7它给出了一个消息:当通过TLS下载时,Curl给出XP上的错误

(35)SCHANNEL:未来的InitializeSecurityContext失败:SEC_E_ILLEGAL_MESSAGE (0x80090326) - 当接收到一个致命的SSL/TLS警告通常会出现此错误 (如握手失败) 。 Windows系统甚至可以提供更详细的日志。

我已经阅读了互联网上的所有可用信息,并发现它与Windowx XP TLS API函数中的错误有关。实施中必须有一个错误。 Google Chrome如何访问此资源?它是否使用它自己的TLS函数或使用Windows API进行TLS协商? 下面是一个例子:

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

回答

1

在Windows XP中的TLS堆栈是很旧,除其他事项外不支持TLS 1.2或SNI,有ECDHE和DHE不支持的支持非常有限。鉴于curl错误消息使用此堆栈(schannel)。您可能会在使用本地TLS堆栈SChannel的XP上获得与IE相同的错误。实际上SSLLabs report指出了XP上IE8的问题。从这份报告中可以看出哪些密码支持网站,如果您将其与ciphers offered by IE8/XP进行比较,并且可能还会发现curl/SChannel,您将发现没有重叠,即没有共享密码。

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

+0

Steffen谢谢你的回答。我怀疑这样的事情。我将用openssl后端重新编译curl。 – zulunation