C# HttpWebrequest失败,yande.re(以及IE和curl)[“请求被中止:无法创建SSL/TLS安全通道。”

C# HttpWebrequest失败,yande.re(以及IE和curl)[“请求被中止:无法创建SSL/TLS安全通道。”,c#,ssl,httpwebrequest,C#,Ssl,Httpwebrequest,我正在尝试使用C#HttpWebRequest从网站yande.re以编程方式下载一个页面。它给出了异常“请求被中止:无法创建SSL/TLS安全通道。” 我已经尝试了不同的组合 ServicePointManager.SecurityProtocol 这些都没有帮助。但是,对于任何其他HTTPS请求,一切都正常 我注意到,我无法在InternetExplorer10中打开此站点,而MingwCurl为此返回“301永久移动”。同时,Firefox、Opera、Chrome等浏览器也没有问题。 我

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

我注意到,我无法在InternetExplorer10中打开此站点,而MingwCurl为此返回“301永久移动”。同时,Firefox、Opera、Chrome等浏览器也没有问题。 我的操作系统是Windows7

我只是想知道yande.re怎么了?还是我?有人能查一下吗。如何以编程方式从中下载任何内容(最好是C++?

根据服务器支持TLS1.2和TLS1.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
基于这些密码套件,Windows 7不支持(不支持TLS_ECDHE_RSA_*GCM*密码套件,也不支持*CHACHA20*)。这意味着任何使用Windows TLS堆栈的应用程序都不能与服务器一起工作,尤其是Internet Explorer和C#应用程序

同时,Firefox、Opera、Chrome等浏览器也没有问题

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

如何以编程方式从中下载任何内容(最好是用C#/C++)

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

根据服务器支持TLS1.2和TLS1.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
基于这些密码套件,Windows 7不支持(不支持TLS_ECDHE_RSA_*GCM*密码套件,也不支持*CHACHA20*)。这意味着任何使用Windows TLS堆栈的应用程序都不能与服务器一起工作,尤其是Internet Explorer和C#应用程序

同时,Firefox、Opera、Chrome等浏览器也没有问题

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

如何以编程方式从中下载任何内容(最好是用C#/C++)


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

感谢您的回复,特别是您展示了如何跟踪问题。但我必须搜索如何在C语言中使用“OpenSSL作为TLS堆栈”,也许有些C++包装,因为我想保持我的幻想窗体UI。不幸的是,我仍然不明白我在做什么。一个5秒钟的问题现在需要永远…@TempVoid:我想你原来的问题已经得到了回答。如果您需要更多帮助,请提出一个新问题,并提供相关代码、您对它应该做什么的期望以及它应该做什么的描述。在我看来,答案只回答了一半:答案更多的是根本原因,而不是确切的解决方案。我不得不使用Python作为最快的结果方法。但是如果我必须使用C或C++来满足需求,我可能会在这个时候把脑袋弄坏。@ TavaVo:Trtrue,而找到了你的问题的原因,问题本身仍然存在。但是我发现您在使用C#的OpenSSL时遇到的任何问题(似乎是您的新计划)都不适合这个问题,最好在新问题中询问问题的确切细节。感谢您的回复,特别是您展示了如何跟踪问题。但我必须搜索如何在C语言中使用“OpenSSL作为TLS堆栈”,也许有些C++包装,因为我想保持我的幻想窗体UI。不幸的是,我仍然不明白我在做什么。一个5秒钟的问题现在需要永远…@TempVoid:我想你原来的问题已经得到了回答。如果您需要更多帮助,请提出一个新问题,并提供相关代码、您对它应该做什么的期望以及它应该做什么的描述。在我看来,答案只回答了一半:答案更多的是根本原因,而不是确切的解决方案。我不得不使用Python作为最快的结果方法。但是如果我必须使用C或C++来满足需求,我可能会在这个时候把脑袋弄坏。@ TavaVo:Trtrue,而找到了你的问题的原因,问题本身仍然存在。但我发现,您在使用C#的OpenSSL时遇到的任何问题(似乎是您的新计划)都不适合这个问题,最好在新问题中询问问题的确切细节。结果:结果: