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

时间:2014-10-15 17:35:29

标签: c# facebook ssl dotnetopenauth

我已经使用Facebook在生产中实施了一段时间的社交登录。截至今天早上,它已不再适合我。我在dev(没有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登录功能继续正常运行。

4 个答案:

答案 0 :(得分:13)

正如Igy所说,这是因为由于POODLE漏洞利用而导致Facebook禁用SSLv3。

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

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
编辑:忘记提及这一点,但我将该行添加到global.asax的Application_Start

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

我们在实时环境中遇到同样的问题。所有帐户都在同一时间更改:

  • Twiter
  • LinkedIn

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

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

对于Facebook来说,将SDK更改为最后一个并重新学习库更改。

2014年10月15日计划在8月份实现这一目标。

的问候,

ISY

答案 3 :(得分:0)

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