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


68

我最近尝试使用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

不知道,但昨天我也得到了。甚至尝试过创建一个新的MVC5项目,添加twitter twitter,甚至失败。
MichaelLake 2014年

您是否尝试过Google搜索这些错误消息?我看到许多与asp.net相关的页面,它们都在讨论这两个错误。
Caleb 2014年

Answers:


95

感谢开源的力量,我们可以看到Twitter证书的指纹已在Katana Project中进行了编码。

Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions

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

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

从默认值更改:

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
    })
});

6
必须将“ CertValidator”更改为“ CertificateThumbprintValidator”,然后添加39A55D933676616E73A761DFA16A7E59CDE66FAD-Symantec Class 3 Secure Server CA-G4-现在,我可以回到原来的状态了!
Breandán

1
是的,谢谢。我已经创建了自己的证书验证器来识别问题。病态更新帖子。
MichaelLake 2014年

1
再次发生-不得不添加4eb6d578499b1ccf5f581ead56be3d9b6744a5e5 -威瑞信3类主要CA - G5人知道这是否也可以通过在Web服务器上安装威瑞信根证书固定symantec.com/page.jsp?id=roots
Breandán

10
再发生一次,我看到了digicert。“ 5168FF90AF0207753CCCD9656462A212B859723B”,// DigiCert SHA2高保证服务器C A“ B13EC36903F8BF4701D498261A0802EF63642BC3” // DigiCert高保证EV根CA
肯尼思·伊托

2
请注意,证书已从Katana 3.1中删除,因此将来不会继续中断。
Tratcher '17

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所有。


3
SO再次得到了这个懒惰开发人员的帮助!
paz 2015年

7
有人知道Twitter是否会宣布何时更改指纹吗?还是我们总是要等待它破裂?
尼克

1
我收到响应状态代码未表示成功:401(需要授权)。在我添加了返回频道之后
Brian

1
我编辑了此答案,以包括Tim对Symantec Class 3 EV SSL CA-G3的发现。
TaeKwonJ​​oe '16

2
我很想学习你们如何确定需要添加哪些证书?我正在使用Fiddler并启用了https解密,但是我无法弄清楚如何找到缺少的证书?
计算机

6

关闭提琴手。

Fiddler Web调试器以某种方式弄乱了Twitter的Oauth。


5

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

options.BackchannelCertificateValidator = null;

并添加到您的Global.asax Application_Start中:

ServicePointManager.ServerCertificateValidationCallback = delegate 
{ 
    return true; 
};

3

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


1
查看chrome上的证书详细信息,会发现5168FF90AF0207753CCCD9656462A212B859723B是颁发机构密钥标识符(imgur.com/5xL7iV5),而01C3968ACDBD57AE7DFAFF9552311608CF23A9F9是主题密钥标识符(imgur.com/R1FeAF0)。我不确定您为什么认为5168FF90AF0207753CCCD9656462A212B859723B无效
kimbaudi

1
我再次查看了该证书,并且您正确地认为api.twitter.com具有更新的主题密钥标识符,其值为01C3968ACDBD57AE7DFAFF9552311608CF23A9F9(imgur.com/J9HaFoO
kimbaudi

0

我遇到了这个确切的问题,我遵循了上面的帖子,并在另一条评论中提到了401(未授权)错误。

我去了我的Twitter开发人员帐户,并取消了一个标题为“启用回调锁定”的框。单击“保存”,然后按F5并成功。

所以上面的代码对我有用。如果您收到401,请再次检查您的Twitter帐户中的复选框。


1
为了解决401(未授权)错误,请将回调URL从* / signin-twitter /更改为* / signin-twitter,最后不加反斜杠
Sasa Tancev '16


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.