Owin Twitter登录 - 根据验证程序,远程证书无效

时间:2014-07-29 09:17:47

标签: .net asp.net-mvc twitter twitter-oauth owin

我最近在尝试使用twitter登录时遇到此错误 - 任何想法为什么?

Stack Trace: 


[AuthenticationException: The remote certificate is invalid according to the validation procedure.]
   System.Net.TlsStream.EndWrite(IAsyncResult asyncResult) +230
   System.Net.PooledStream.EndWrite(IAsyncResult asyncResult) +13
   System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar) +123

[WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.]
   System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) +6432446
   System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) +64

8 个答案:

答案 0 :(得分:95)

由于开源的强大功能,我们可以看到twitter证书的指纹已在Katana项目中编码。

Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions

最近一些证书必须已更改,现在指纹不再匹配。

请为您的Startup.Auth.cs(适用于MVC用户)的Twitter身份验证选项添加“VeriSign Class 3公共主要证书颁发机构 - G5”证书的新拇指指纹。

更改默认值:

app.UseTwitterAuthentication(
    consumerKey: "XXXX",
    consumerSecret: "XXX"
);

使用此:

app.UseTwitterAuthentication(new TwitterAuthenticationOptions
{
    ConsumerKey = "XXXX",
    ConsumerSecret = "XXXX",
    BackchannelCertificateValidator = new CertificateSubjectKeyIdentifierValidator(new[]
    {
        "A5EF0B11CEC04103A34A659048B21CE0572D7D47", // VeriSign Class 3 Secure Server CA - G2
        "0D445C165344C1827E1D20AB25F40163D8BE79A5", // VeriSign Class 3 Secure Server CA - G3
        "7FD365A7C2DDECBBF03009F34339FA02AF333133", // VeriSign Class 3 Public Primary Certification Authority - G5
        "39A55D933676616E73A761DFA16A7E59CDE66FAD", // Symantec Class 3 Secure Server CA - G4
        "5168FF90AF0207753CCCD9656462A212B859723B", //DigiCert SHA2 High Assurance Server C‎A 
        "B13EC36903F8BF4701D498261A0802EF63642BC3" //DigiCert High Assurance EV Root CA
    })
});

答案 1 :(得分:86)

总结并保存人们挖掘评论,这里是最新的配置:

app.UseTwitterAuthentication(new TwitterAuthenticationOptions
{
    ConsumerKey = "XXXX",
    ConsumerSecret = "XXXX",
    BackchannelCertificateValidator = new Microsoft.Owin.Security.CertificateSubjectKeyIdentifierValidator(new[]
    {
        "A5EF0B11CEC04103A34A659048B21CE0572D7D47", // VeriSign Class 3 Secure Server CA - G2
        "0D445C165344C1827E1D20AB25F40163D8BE79A5", // VeriSign Class 3 Secure Server CA - G3
        "7FD365A7C2DDECBBF03009F34339FA02AF333133", // VeriSign Class 3 Public Primary Certification Authority - G5
        "39A55D933676616E73A761DFA16A7E59CDE66FAD", // Symantec Class 3 Secure Server CA - G4
        "‎add53f6680fe66e383cbac3e60922e3b4c412bed", // Symantec Class 3 EV SSL CA - G3
        "4eb6d578499b1ccf5f581ead56be3d9b6744a5e5", // VeriSign Class 3 Primary CA - G5
        "5168FF90AF0207753CCCD9656462A212B859723B", // DigiCert SHA2 High Assurance Server C‎A 
        "B13EC36903F8BF4701D498261A0802EF63642BC3" // DigiCert High Assurance EV Root CA
    })
});

@MichaelLake和@KennethIto的所有学分。

答案 2 :(得分:6)

关闭Fiddler。

不知何故,Fiddler网络调试器搞砸了推特的Oauth。

答案 3 :(得分:5)

仅出于测试目的(!),也可以设置

options.BackchannelCertificateValidator = null;

并添加到您的Global.asax Application_Start:

ServicePointManager.ServerCertificateValidationCallback = delegate 
{ 
    return true; 
};

答案 4 :(得分:3)

DigiCert SHA2高保证服务器C A值“5168FF90AF0207753CCCD9656462A212B859723B”似乎无效。新值为“01C3968ACDBD57AE7DFAFF9552311608CF23A9F9”。它的有效期为2016年6月28日至9月19日。我通过转到Chrome中的https://api.twitter.com/找到它,然后点击地址栏中的挂锁查看证书。

答案 5 :(得分:0)

我遇到了上面这篇文章的确切问题,我收到了另一条评论中提到的401(未经授权)错误。

我访问了我的Twitter开发帐户并取消选中了一个标题为“"启用回拨锁定"”的框。点击保存,点击F5然后就可以了。

所以上面的代码对我有用。如果您获得401双重检查您的Twitter帐户的复选框。

答案 6 :(得分:0)

对我来说,只需将(ord(chr(73)) +5^ord(Y[5])) % 255更新为版本3.1.0即可修复它,即使不添加指纹!

答案 7 :(得分:0)

我遇到了同样的问题,并且已经在Twitter应用程序中更新了回调URL。

添加默认URL https://mywebsite/signin-twitter