【问题标题】:Could not create SSL/TLS secure channel for Facebook无法为 Facebook 创建 SSL/TLS 安全通道
【发布时间】:2014-10-15 17:35:28
【问题描述】:

我在生产环境中使用 Facebook 进行社交登录已经有一段时间了。截至今天早上,它不再为我工作。我在开发(没有 SSL)和生产中遇到了同样的错误,它托管在 Azure 网站上,并且确实使用了 SSL。

这是我看到的错误:

[WebException: The request was aborted: Could not create SSL/TLS secure channel.] System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) +283 System.Net.WebClient.DownloadString(Uri address) +100 DotNetOpenAuth.AspNet.Clients.FacebookClient.QueryAccessToken(Uri returnUrl, String authorizationCode) +350 DotNetOpenAuth.AspNet.Clients.OAuth2Client.VerifyAuthentication(HttpContextBase context, Uri returnPageUrl) +202 DotNetOpenAuth.AspNet.OpenAuthSecurityManager.VerifyAuthentication(String returnUrl) +411 Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthenticationCore(HttpContextBase context, String returnUrl) +189 Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthentication(String returnUrl) +139

还有人看到这个吗?我的 Google 登录仍然可以正常工作。

【问题讨论】:

标签: c# facebook ssl dotnetopenauth


【解决方案1】:

正如 Igy 所说,这是由于 POODLE 漏洞利用而被 Facebook 禁用了 SSLv3。

我在连接到 Twitter 的应用上也发生了同样的事情。我通过添加这行代码来使用 TLS 来修复它。我不确定这是最好的解决方案,但它现在有效。

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12

编辑:忘记提及这一点,但我将该行添加到 global.asax 的 Application_Start

【讨论】:

  • 感谢您的编辑,这对您有所帮助。不幸的是,它没有用。我设置了一个断点,以确保应用程序确实正在重新启动并且它被击中,不幸的是,我仍然遇到同样的异常。
  • 为了更好的衡量标准,我还尝试了TslTsl11。结果相同。
  • 在每个使用 https 的网络请求之前的这行代码对我有用。所有 facebook、linkedin 和 twitter 连接/帖子都受到影响
  • 附带说明,我的设置一直在恢复。我使用dotPeek 将我的解决方案文件夹添加到程序集,然后在SecurityProtocol 上使用“查找用法”。原来有一个第 3 方插件硬编码为使用 Ssl3 并导致进一步的问题。
  • 更正:“将我的解决方案文件夹添加到程序集列表”
【解决方案2】:

在 2014 年 10 月 14 日公开披露协议中的一个漏洞 (http://googleonlinesecurity.blogspot.com/2014/10/this-poodle-bites-exploiting-ssl-30.html) 后,Facebook 已放弃对 Facebook 平台 API 和实时更新 API 中的 SSL 3.0 的支持。

使用 SSL 3.0 的旧版本 PHP SDK(Facebook PHP SDK 3.1.1 及更早版本)现在将不再工作。

所有开发者都应该升级到 Facebook SDK 3.2.3 或更高版本。建议使用 SDK 4.0.0。

【讨论】:

    【解决方案3】:

    我们在实际环境中也有同样的问题。所有帐户同时更改:

    • 脸书
    • 推特
    • 领英

    对于 twitter,我认为只需要更新 Twitterizer.dll 或最新的 3rd 方 Twitter 库并检查代码更改。

    对于 LinkedIn,使用 OAuthv2(或最后一个,我不记得版本发布)会很有趣,但我记得它很难解决。

    对于 Facebook 也是如此,将 SDK 更改为最后一个并重新学习库更改。

    2014 年 10 月 15 日计划在 8 月发生。

    问候,

    伊西

    【讨论】:

      【解决方案4】:

      为什么将 SecurityProtocol 设置为 TLS 是一种解决方案? .net 无论如何都应该与服务器协商尽可能高的协议,如果 TLS 是一个选项,则比 SSL 更喜欢那个,不是吗?!

      【讨论】:

      • 是的,但是我有一个第三方库,它覆盖了默认值并专门请求 SSL。
      猜你喜欢
      • 2021-12-13
      • 2014-12-26
      • 2017-02-10
      • 2017-08-22
      • 2016-08-03
      • 2018-06-17
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多