HttpWebrequest 因 yande.re(以及 IE 和 curl)["The request was aborted: Could not create SSL/TLS secure channel."] 而失败

HttpWebrequest fails with yande.re (and IE and curl)["The request was aborted: Could not create SSL/TLS secure channel."]

我正在尝试使用 C# HttpWebRequest 以编程方式从站点 yande.re 下载页面。它给出异常“请求被中止:无法创建 SSL/TLS 安全通道。” 我已经尝试过不同的组合 ServicePointManager.SecurityProtocol 这些都没有帮助。然而,对于任何其他 HTTPS 请求,一切正常。

我注意到我无法在 InternetExplorer 10 和 MINGW curl returns“301 永久移动”中打开此站点。同时,Firefox、Opera、Chrome 等浏览器都没有问题。 我的 OS 是 Windows 7.

所以我想知道 yande.re 有什么问题?还是我?任何人都可以检查一下。我如何以编程方式从中下载任何内容(最好使用 C#/C++)?

根据 SSLLabs,服务器支持 TLS 1.2 和 TLS 1.3。 Windows 7 中的 Microsoft TLS 堆栈不支持 TLS 1.3。至于 TLS 1.2,服务器仅支持以下密码套件:

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

基于 the Microsoft documentation 这些密码套件在 Windows 7 中不受支持(不支持 TLS_ECDHE_RSA_*GCM* 密码套件并且不支持 *CHACHA20*)。这意味着任何使用 Windows TLS 堆栈的应用程序都不能与服务器一起工作,尤其是 Internet Explorer 和 C# 应用程序。

Same time browsers like Firefox, Opera, Chrome have no problems with it.

这些浏览器不使用 Windows TLS 堆栈,而是使用 NSS (Firefox) 和 BoringSSL(Opera,Chrome)。因此,Windows TLS 堆栈的限制无关紧要。

How can I programmatically download anything from it (preferably in C#/C++)?

使用 C++,您可以将 OpenSSL 用作没有这些限制的 TLS 堆栈。 Python 还使用 OpenSSL 作为 TLS 堆栈,因此它应该也能工作。