Das Remotezertifikat wurde vom Benutzer als ungültig bestätigt

9

In einer virtuellen Azure-Maschine habe ich eine Webanwendung und eine Subwebanwendung mit FormsAuthentication und HTTPS, die mit einem gültigen Zertifikat konfiguriert sind. Die Authentifizierung erfolgt zwischen der Hauptanwendung und der Unteranwendung mit demselben Maschinenschlüssel. SSL ist für die beiden Anwendungen erforderlich

Alles ist OK von draußen mit der öffentlichen URL.

Ich muss einige Anfragen von der Hauptanwendung an die Unteranwendung mit dem öffentlichen Namen zur Konfiguration senden (die Unteranwendung könnte auf einem anderen Server installiert werden). Diese Anfragen verwenden einen bestimmten Account zur Identifizierung.

Dies ist mein Code, um eine Anfrage von der Hauptanwendung an die Unteranwendung zu senden. this.WebApiUrl ist die öffentliche URL:

%Vor%

Alles ist OK ohne ssl. Wenn ich ssl aktiv bin, schlägt die Anforderung zwischen der Hauptanwendung und der Subdomänenanwendung mit

fehl
  

Die zugrunde liegende Verbindung wurde geschlossen: Konnte keine Vertrauensstellung herstellen   Beziehung für den sicheren SSL / TLS-Kanal ..

Hier sind die Systemprotokolle von System.Net und System.Net Sockets.

  

System.Net Informationen: 0: [10788] SecureChannel # 92992 - Remote   Das Zertifikat wurde vom Benutzer als ungültig bestätigt.

     

System.Net.Sockets Verbose: 0: [10788] Socket # 29502801 :: Dispose ()

     

System.Net Fehler: 0: [10788] Ausnahme in HttpWebRequest # 61435094 :: - Die zugrunde liegende Verbindung wurde geschlossen: Konnte Vertrauensbeziehung für den sicheren SSL / TLS-Kanal nicht herstellen ..

     

System.Net Ausführlich: 0: [10788] HttpWebRequest # 61435094 :: EndGetResponse ()

     

System.Net Fehler: 0: [10788] Ausnahme in HttpWebRequest # 61435094 :: EndGetResponse - Die zugrunde liegende Verbindung wurde geschlossen: Konnte Vertrauensbeziehung für den sicheren SSL / TLS-Kanal nicht herstellen ..

Was seltsam ist, das Protokoll sagt nicht, warum das Zertifikat vom Benutzer als ungültig verifiziert wurde. Dieses Zertifikat gilt für die Anfrage von außen.

Wichtig: Ich möchte keine Lösung mit ServicePointManager.ServerCertificateValidationCallback, da sie sich in einer Produktionsumgebung befindet

Danke für Ihre Hilfe

    
Troopers 22.09.2015, 14:54
quelle

1 Antwort

2

Stellen Sie eine ServerCertificateValidationCallback irgendwo anders in Ihrem Code zur Verfügung?

Wir hatten einen logischen Fehler in einem von uns implementierten Callback, bei dem bestimmte Domänen mit selbstsignierten Zertifikaten in die Whitelist aufgenommen wurden. Der Callback wurde nämlich immer ausgeführt - auch für gültige Zertifikate -, aber nur unter Verwendung der Whitelisting-Logik. Da legitime Zertifikate nicht in dieser Liste enthalten waren, gab der Rückruf einen Fehler an.

Dies wurde behoben, indem wir basierend auf der error -Variable früh zurückkehrten:

if (error == SslPolicyErrors.None) return true;

    
nullPainter 22.12.2015 21:16
quelle