C# 无法为Facebook创建SSL/TLS安全通道

C# 无法为Facebook创建SSL/TLS安全通道,c#,facebook,ssl,dotnetopenauth,C#,Facebook,Ssl,Dotnetopenauth,一段时间以来,我一直在生产中使用Facebook进行社交登录。从今天早上起,它不再适用于我。我在开发(没有SSL)和生产(托管在Azure网站上,并且使用SSL)中遇到了相同的错误 下面是我看到的错误: [WebException:请求被中止:无法创建SSL/TLS安全通道。] System.Net.WebClient.DownloadDataInternal(Uri地址、WebRequest和request)+283 System.Net.WebClient.DownloadString(Ur

一段时间以来,我一直在生产中使用Facebook进行社交登录。从今天早上起,它不再适用于我。我在开发(没有SSL)和生产(托管在Azure网站上,并且使用SSL)中遇到了相同的错误

下面是我看到的错误:

[WebException:请求被中止:无法创建SSL/TLS安全通道。]
System.Net.WebClient.DownloadDataInternal(Uri地址、WebRequest和request)+283
System.Net.WebClient.DownloadString(Uri地址)+100
DotNetOpenAuth.AspNet.Clients.FacebookClient.QueryAccessToken(Uri返回URL,字符串授权代码)+350
DotNetOpenAuth.AspNet.Clients.OAuth2Client.VerifyAuthentication(HttpContextBase上下文,Uri returnPageUrl)+202
DotNetOpenAuth.AspNet.OpenAuthSecurityManager.VerifyAuthentication(字符串返回URL)+411
Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthenticationCore(HttpContextBase上下文,字符串返回URL)+189
Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthentication(字符串返回URL)+139


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

正如Igy所说,这是因为Facebook因为狮子狗攻击而禁用了SSLv3

我在一个连接到Twitter的应用程序上也遇到了同样的情况。我通过添加这行代码来使用TLS解决了这个问题。我不确定这是不是最好的解决方案,但它现在起作用了

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

编辑:忘了提及这一点,但我将这一行添加到了应用程序_Start of global。在协议中的漏洞于2014年10月14日被公开披露后,asax

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

  • PHP SDK 3.2.3:
  • PHP SDK 4.0.0:
  • 开发文档:

    • 我们在现场环境中也遇到同样的问题。同时更改了所有帐户:

      • 脸谱网
      • 推特
      • LinkedIn
      对于twitter,我认为只需要更新Twitterizer.dll或最新的第三方twitter库,并检查代码更改

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

      同样,对于Facebook,将SDK更改为最后一个,然后重新学习库更改

      2014年10月15日计划在8月份进行

      问候,


      为什么将SecurityProtocol设置为TLS是一个解决方案。net无论如何都应该与服务器协商尽可能高的协议,如果TLS是一个选项,那么它应该选择TLS而不是SSL,不是吗

      你还在用SSL3吗?由于看起来像我,Facebook的所有端点都禁用了SSL3。我尝试了Mikejh99的建议,但仍然得到了相同的异常。感谢您的编辑,这很有帮助。不幸的是,它不起作用。我设置了一个断点,以确保应用程序确实正在重新启动并且被命中,不幸的是,我仍然得到相同的异常。为了更好地衡量,我还尝试了
      Tsl
      Tsl11
      。同样的结果。在每次使用https的web请求之前,这行代码对我来说都很有用。所有facebook、linkedin和twitter connect/post都受到了影响。作为旁注,我的设置一直在恢复。我曾经将我的解决方案文件夹添加到程序集中,然后在
      SecurityProtocol
      上使用“查找用法”。原来有一个第三方插件硬编码为使用
      Ssl3
      ,并导致了进一步的问题。更正:“将我的解决方案文件夹添加到程序集列表”是的,但我有一个第三方库,它覆盖了默认值,并且专门请求SSL。