.net Owin Twitter登录-根据验证过程,远程证书无效
我最近在尝试使用twitter登录时出现了这个错误——知道为什么吗.net Owin Twitter登录-根据验证过程,远程证书无效,.net,asp.net-mvc,twitter,twitter-oauth,owin,.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(
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
多亏了开源的力量,我们可以看到twitter证书的指纹已经在Katana项目中编码
Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions
最近某些证书必须已更改,现在指纹不再匹配
请在Startup.Auth.cs
中的Twitter身份验证选项中添加“VeriSign Class 3 Public Primary Certification Authority-G5”证书的新指纹(适用于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 CA
"B13EC36903F8BF4701D498261A0802EF63642BC3" //DigiCert High Assurance EV Root CA
})
});
关闭小提琴手。 不知何故,Fiddler web调试器弄乱了Twitter的Oauth。仅出于测试目的(!)还可以设置
options.BackchannelCertificateValidator = null;
并添加到您的Global.asax应用程序\u Start:
ServicePointManager.ServerCertificateValidationCallback = delegate
{
return true;
};
要总结并保存通过评论挖掘的用户,请查看以下最新配置:
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。我遇到了这个问题,我在上面的帖子中看到了另一条评论中提到的401(未经授权)错误 我转到我的Twitter开发帐户,取消选中了一个标题为“启用回调锁定”的框。点击save,点击F5,它就工作了
所以上面的代码对我有用。如果你得到了401,请仔细检查你的Twitter帐户中的复选框 DigiCert SHA2高保证服务器C值“5168FF90AF0207753CCD9656462A212B859723B”似乎无效。新值为“01C3968ACDBD57AE7DFAFF9552311608CF23A9F9”。有效期为2016年6月28日至2019年9月19日。我在Chrome中找到它,然后点击地址栏中的挂锁查看证书。对我来说,只需将Microsoft.Owin.Security.Twitter更新到3.1.0版,就可以修复它,即使没有添加指纹 我也有同样的问题,我已经在我的Twitter应用程序中更新了回调URL
添加默认URL不知道,但我从昨天开始就得到了它。你甚至试过创建一个新的MVC5项目,添加twitter密钥,但都失败了。你试过用谷歌搜索那些错误消息吗?我看到许多与asp.net相关的页面都谈到了这两个错误。我不得不将“CertificateThumbprintValidator”更改为“CertificateThumbprintValidator”,并添加39A55D933676616E73A761DFA16A7E59CDE66FAD-Symantec Class 3安全服务器CA-G4-现在我可以回到我应该做的事情了!是的,谢谢你。。。我已经创建了自己的证书验证器来识别问题。我将更新帖子。再次发生-必须添加4eb6d578499b1ccf5f581ead56be3d9b6744a5e5-VeriSign Class 3 Primary CA-G5任何人都知道这是否也可以通过在web服务器上安装VeriSign根证书来修复,再次发生,我看到digicert。“5168FF90AF0207753CCD9656462A212B859723B”//DigiCert SHA2高保证服务器C“B13EC36903F8BF4701D498261A0802EF63642BC3”//DigiCert高保证EV根独木舟证书已从Katana 3.1中删除,因此在将来不会继续中断。因此,再次向这个懒惰的开发人员提供帮助!有人知道Twitter是否会宣布他们将要更改指纹吗?或者我们总是要等待它崩溃吗?我得到的响应状态代码并不表示成功:401(需要授权)。在我添加反向通道后,我编辑了这个答案,包括Tim对Symantec Class 3 EV SSL CA-G3的发现。我很想了解你们是如何解决需要添加哪些证书的问题的?我正在使用Fiddler并启用https解密,但我不知道你是如何找到丢失的证书的?为了解决401(未经授权)错误将回调URL从*/signin twitter/更改为*/signin twitter,末尾不带反斜杠查看chrome上的证书详细信息显示5168FF90AF0207753CCD9656462A212B859723B是权限密钥标识符(),01C3968ACDBD57AE7DFAFF9552311608CF23A9F9是主题密钥标识符()。我不知道你为什么认为5168FF90AF0207753CCD9656462A212B859723B无效。我再看一眼证书,你就知道api.twitter.com有一个新的主题密钥标识符,值为01C3968ACDBD57AE7DFAFF9552311608CF23A9F9()