我最近在try 使用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

推荐答案

多亏了开源的力量,我们可以看到Twitter证书的 fingerprint 已经编码到了Katana项目中.

Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions

最近一些证书肯定已经更改,现在 fingerprint 不再匹配.

请将"VeriSign Class 3 Public Primary Certification Authority-G5"证书的新 fingerprint 添加到您Startup.Auth.cs(MVC用户)的Twitter认证选项中.

更改默认设置:

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

.net相关问答推荐

MongoDB GridFs with C#,如何存储图片等文件?

查找 2 个已知值之间的字符串

NonSerialized 属性

C#6.0 字符串插值本地化

不同命名空间中的部分类

在 C# DllImport 中使用 32 位或 64 位 dll

一种消耗(所有字节)BinaryReader 的优雅方式?

将笔画应用于 WPF 中的文本块

C# 是否(或将)包含用于副作用验证的功能?

使用 EPPlus 时如何设置列类型

C# 的 Actors 有什么好的实现吗?

如何根据默认样式创建样式?

如何使用 c# 仅获取目录中的文件名?

mscorlib 代表什么?

场与财产.性能优化

更改 SqlConnection 超时

MemoryCache 不遵守配置中的内存限制

忽略 LINQ to XML 中的命名空间

Uri.Host 和 Uri.Authority 有什么区别

如何将两个 List 相互比较?