我最近在尝试使用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
答案 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 CA
"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 CA
"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