Owin Twitter Login - Das Remote-Zertifikat ist gemäß dem Validierungsverfahren ungültig


68

Ich habe vor kurzem diesen Fehler erhalten, als ich versucht habe, mich über Twitter anzumelden - eine Idee warum?

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

Keine Ahnung, aber ich bekomme es auch ab gestern. Habe sogar versucht, ein neues MVC5-Projekt zu erstellen, Twitter-Keys hinzuzufügen, und selbst das schlägt fehl.
Michael

Haben Sie versucht, diese Fehlermeldungen zu googeln? Ich sehe eine Reihe von asp.net-bezogenen Seiten, die über beide Fehler sprechen.
Caleb

Antworten:


95

Dank der Leistungsfähigkeit von Open Source können wir sehen, dass die Fingerabdrücke für die Twitter-Zertifikate im Katana-Projekt codiert wurden.

Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions

Vor kurzem müssen sich einige Zertifikate geändert haben und jetzt stimmen die Fingerabdrücke nicht mehr überein.

Fügen Sie Ihren Twitter-Authentifizierungsoptionen in Ihrem Internet einen neuen Fingerabdruck für das Zertifikat "VeriSign Class 3 Public Primary Certification Authority - G5" hinzu Startup.Auth.cs (für MVC-Benutzer) .

Vom Standard ändern:

app.UseTwitterAuthentication(
    consumerKey: "XXXX",
    consumerSecret: "XXX"
);

Benutze das:

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

6
Musste "CertValidator" in "CertificateThumbprintValidator" ändern und 39A55D933676616E73A761DFA16A7E59CDE66FAD - Symantec Class 3 Secure Server CA - G4 hinzufügen - jetzt kann ich wieder zu dem zurückkehren, was ich eigentlich tun sollte!
Breandán

1
Ja, danke dafür ... Ich hatte meinen eigenen Zertifikatsvalidator erstellt, um das Problem zu identifizieren. Ich werde den Beitrag aktualisieren.
MichaelLake

1
Happening wieder - hatte 4eb6d578499b1ccf5f581ead56be3d9b6744a5e5 hinzufügen - VeriSign Class 3 Primary CA - G5 Wer weiß , ob dies auch durch die Installation der VeriSign Root - Zertifikate auf den Web - Server festgelegt werden kann symantec.com/page.jsp?id=roots
Breandan

10
Und wieder passiert, ich sehe Digicert. "5168FF90AF0207753CCCD9656462A212B859723B", // DigiCert SHA2 Hochsicherungsserver C A "B13EC36903F8BF4701D498261A0802EF63642BC3" // DigiCert Hochsicherheit EV Root CA
Kenneth Ito

2
Beachten Sie, dass die Zertifikate aus Katana 3.1 entfernt wurden, damit dies auch in Zukunft nicht mehr funktioniert.
Tratcher

86

Um die Leute zusammenzufassen und zu retten, die in den Kommentaren stöbern, hier die neueste Konfiguration:

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

Alle Credits an @MichaelLake und @KennethIto.


3
Und SO kommt die Hilfe dieses faulen Entwicklers wieder!
Paz

7
Weiß jemand, ob Twitter bekannt gibt, wann Fingerabdrücke geändert werden sollen? Oder müssen wir immer warten, bis es kaputt geht?
Nick

1
Ich erhalte einen Antwortstatuscode, der keinen Erfolg anzeigt: 401 (Autorisierung erforderlich). nachdem ich die Back-Kanäle hinzugefügt habe
Brian

1
Ich habe diese Antwort bearbeitet, um Tims Fund für Symantec Class 3 EV SSL CA - G3 aufzunehmen.
TaeKwonJoe

2
Ich würde gerne erfahren, wie ihr herausfindet, welche Zertifikate hinzugefügt werden müssen. Ich benutze Fiddler und aktivierte https-Entschlüsselung, aber ich kann nicht herausfinden, wie Sie finden, welche Zertifikate fehlen?
Computer

6

Schalten Sie Fiddler aus.

Irgendwie bringt der Fiddler-Webdebugger das Oauth für Twitter durcheinander.


5

Nur zu Testzwecken (!) Ist es auch möglich, die einzustellen

options.BackchannelCertificateValidator = null;

und fügen Sie Ihrem Global.asax Application_Start Folgendes hinzu:

ServicePointManager.ServerCertificateValidationCallback = delegate 
{ 
    return true; 
};

3

Der DigiCert SHA2 High Assurance Server C Ein Wert von "5168FF90AF0207753CCCD9656462A212B859723B" scheint nicht gültig zu sein. Der neue Wert lautet "01C3968ACDBD57AE7DFAFF9552311608CF23A9F9". Es ist gültig vom 28.06.2016 bis 19.09.2019. Ich habe es gefunden, indem ich in Chrome zu https://api.twitter.com/ gegangen bin und dann auf das Vorhängeschloss in der Adressleiste geklickt habe, um das Zertifikat anzuzeigen.


1
Das Anzeigen der Zertifikatdetails auf Chrom zeigt, dass 5168FF90AF0207753CCCD9656462A212B859723B die Berechtigungsschlüsselkennung ( imgur.com/5xL7iV5 ) und 01C3968ACDBD57AE7DFAFF9552311608CF23A9F9 die Betreffschlüsselkennung ( img.com ) ist. Ich bin nicht sicher, warum Sie denken, dass 5168FF90AF0207753CCCD9656462A212B859723B nicht gültig ist
Kimbaudi

1
Ich habe mir das Zertifikat noch einmal angesehen und Sie haben Recht, dass api.twitter.com eine neuere Betreffschlüssel- ID mit dem Wert 01C3968ACDBD57AE7DFAFF9552311608CF23A9F9 ( imgur.com/J9HaFoO ) hat
kimbaudi

0

Ich hatte genau dieses Problem. Ich folgte dem obigen Beitrag und bekam den 401 (nicht autorisierten) Fehler, der in einem anderen Kommentar erwähnt wurde.

Ich ging zu meinem Twitter-Entwicklerkonto und deaktivierte das Kontrollkästchen "Rückrufsperre aktivieren". Klicken Sie auf Speichern, drücken Sie F5 und es hat funktioniert.

Der obige Code hat also für mich funktioniert. Wenn Sie einen 401 erhalten, überprüfen Sie Ihr Twitter-Konto auf das Kontrollkästchen.


1
Um 401 (nicht autorisierte) Fehler zu beheben, ändern Sie die Rückruf-URL von * / signin-twitter / zu * / signin-twitter Ohne Backslash am Ende
Sasa Tancev

0

Für mich hat das Update Microsoft.Owin.Security.Twitterauf Version 3.1.0 das Problem behoben, auch ohne die Fingerabdrücke hinzuzufügen!


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.