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 C‎A 
        "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 C‎A "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 C‎A 
        "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登录-根据验证程序远程证书无效的主要内容,如果未能解决你的问题,请参考以下文章

根据验证程序,远程证书无效[重复]

根据验证程序,远程证书无效[重复]

使用 HttpClient 的“远程证书根据验证程序无效”

根据验证程序,远程证书无效

ITfoxtec - ADFS SAML2 根据验证程序,远程证书无效

抛出异常:根据验证程序,远程证书无效