Owin Twitter登录-根据验证程序远程证书无效
Posted
技术标签:
【中文标题】Owin Twitter登录-根据验证程序远程证书无效【英文标题】:Owin Twitter login - the remote certificate is invalid according to the validation procedure 【发布时间】:2014-09-20 14:57:27 【问题描述】:我最近在尝试使用 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 密钥,甚至失败。 你试过用谷歌搜索那些错误信息吗?我看到许多与 asp.net 相关的页面都在讨论这两个错误。 【参考方案1】:感谢开源的力量,我们可以看到 Twitter 证书的指纹已在 Katana 项目中编码。
Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions
最近一些证书必须更改,现在指纹不再匹配。
请在Startup.Auth.cs
(适用于 MVC 用户)中将“VeriSign Class 3 Public Primary Certification Authority - G5”证书的新指纹添加到 Twitter Auth Options。
从默认更改:
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
)
);
【讨论】:
必须将“CertValidator”更改为“CertificateThumbprintValidator”并添加 39A55D933676616E73A761DFA16A7E59CDE66FAD - Symantec Class 3 Secure Server CA - G4 - 现在我可以回到我应该做的事情了! 是的,谢谢...我创建了自己的证书验证器来识别问题。我会更新帖子。 再次发生 - 必须添加 4eb6d578499b1ccf5f581ead56be3d9b6744a5e5 - VeriSign Class 3 Primary CA - G5 任何人都知道这是否也可以通过在 Web 服务器上安装 VeriSign 根证书来解决 symantec.com/page.jsp?id=roots 又发生了一次,我看到了digicert。 "5168FF90AF0207753CCCD9656462A212B859723B", //DigiCert SHA2 High Assurance Server CA "B13EC36903F8BF4701D498261A0802EF63642BC3" //DigiCert High Assurance EV Root CA 请注意,证书已从 Katana 3.1 中删除,因此将来不会继续中断。【参考方案2】:关闭 Fiddler。
Fiddler Web 调试器不知何故弄乱了 Twitter 的 Oauth。
【讨论】:
【参考方案3】:仅用于测试目的 (!) 也可以设置
options.BackchannelCertificateValidator = null;
并添加到您的 Global.asax Application_Start:
ServicePointManager.ServerCertificateValidationCallback = delegate
return true;
;
【讨论】:
【参考方案4】:总结和拯救人们挖掘cmets,这里是最新的配置:
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。
【讨论】:
于是又来求助于这个懒惰的开发者了! 有谁知道 Twitter 是否会宣布何时更改指纹?还是我们总是要等它坏掉? 我收到响应状态代码不表示成功:401(需要授权)。在我添加反向频道后 我编辑了这个答案,包括 Tim 对 Symantec Class 3 EV SSL CA - G3 的发现。 我很想了解你们是如何确定需要添加哪些证书的?我正在使用 Fiddler 并启用了 https 解密,但我不知道您是如何找到缺少哪些证书的?【参考方案5】:我遇到了这个确切的问题,我按照上面的帖子进行操作,并且在另一条评论中提到了 401(未经授权)错误。
我访问了我的 Twitter 开发帐户并取消选中标题为“启用回调锁定”的框。单击保存,按F5,它工作。
所以上面的代码对我有用。如果您收到 401,请仔细检查您的 Twitter 帐户是否有复选框。
【讨论】:
为了解决 401(未授权)错误,将回调 URL 从 */signin-twitter/ 更改为 */signin-twitter 末尾不带反斜杠【参考方案6】:DigiCert SHA2 高保证服务器 C“5168FF90AF0207753CCCD9656462A212B859723B”的值似乎无效。新值为“01C3968ACDBD57AE7DFAFF9552311608CF23A9F9”。有效期为 2016 年 6 月 28 日至 2019 年 9 月 19 日。我通过在 Chrome 中转到 https://api.twitter.com/ 找到它,然后单击地址栏中的挂锁以查看证书。
【讨论】:
在chrome上查看证书详细信息显示5168FF90AF0207753CCCD9656462A212B859723B是Authority Key Identifier(imgur.com/5xL7iV5),01C3968ACDBD57AE7DFAFF9552311608CF23A9F9是Subject Key Identifier(43A975)。我不知道你为什么认为 5168FF90AF0207753CCCD9656462A212B859723B 无效 我又看了一遍证书,你说得对,api.twitter.com 有一个更新的主题密钥标识符,值为 01C3968ACDBD57AE7DFAFF9552311608CF23A9F9 (imgur.com/J9HaFoO)【参考方案7】:对我来说,只需将 Microsoft.Owin.Security.Twitter
更新到 3.1.0 版即可修复它,即使没有添加指纹!
【讨论】:
【参考方案8】:我遇到了同样的问题,我已经在我的 Twitter 应用中更新了回调 URL。
添加默认网址https://mywebsite/signin-twitter
【讨论】:
以上是关于Owin Twitter登录-根据验证程序远程证书无效的主要内容,如果未能解决你的问题,请参考以下文章