381 Stimmen

Konnte keine Vertrauensbeziehung für den sicheren SSL/TLS-Kanal herstellen - SOAP

Ich habe einen einfachen Webdienstaufruf, der von einer .NET (C#) 2.0 Windows-Anwendung über den von Visual Studio generierten Webdienst-Proxy für einen ebenfalls in C# (2.0) geschriebenen Webdienst generiert wird. Dies hat mehrere Jahre lang funktioniert und tut es auch weiterhin an den etwa ein Dutzend Orten, an denen es ausgeführt wird.

Bei einer Neuinstallation an einem neuen Standort gibt es ein Problem. Beim Versuch, den Webdienst aufzurufen, schlägt er mit der folgenden Meldung fehl:

Es konnte keine Vertrauensbeziehung für die SSL/TLS Secure Kanal

Die URL des Webdienstes verwendet SSL (https://) - aber das funktioniert schon seit langem (und auch weiterhin) von vielen anderen Orten aus.

Wo muss ich suchen? Könnte dies ein Sicherheitsproblem zwischen Windows und .NET sein, das nur bei dieser Installation auftritt? Wenn ja, wo kann ich Vertrauensbeziehungen einrichten? Ich bin ratlos!

18voto

Diogo Punkte 616

Wenn Sie Windows 2003 verwenden, können Sie dies versuchen:

Öffnen Sie die Microsoft-Verwaltungskonsole (Start --> Ausführen --> mmc.exe);

Wählen Sie Datei --> Snap-In hinzufügen/entfernen;

Wählen Sie auf der Registerkarte Eigenständig die Option Hinzufügen;

Wählen Sie das Snap-In Zertifikate, und klicken Sie auf Hinzufügen;

Wählen Sie im Assistenten die Option Computer Konto, und wählen Sie dann Lokaler Computer. Drücken Sie Fertigstellen, um den Assistenten zu beenden;

Schließen Sie das Dialogfeld Snap-In hinzufügen/entfernen;

N Computer) und wählen Sie einen Speicher zum importieren:

Wenn Sie über das Root-CA-Zertifikat für das Unternehmen, das das Zertifikat ausgestellt hat, wählen Sie Trusted Root Zertifizierungsstellen;

Wenn Sie das Zertifikat haben Server selbst haben, wählen Sie Andere Personen

Klicken Sie mit der rechten Maustaste auf die Filiale und wählen Sie Alle Aufgaben --> Importieren

Folgen Sie dem Assistenten und geben Sie die Zertifikatsdatei, die Sie haben;

Danach starten Sie einfach IIS neu und versuchen den Webdienst erneut aufzurufen.

Referenz: http://www.outsystems.com/NetworkForums/ViewTopic.aspx?Topic=Web-Services:-Could-not-establish-trust-relationship-for-the-SSL/TLS- ...

8voto

sipsorcery Punkte 29399

Microsofts SSL-Diagnose-Tool kann vielleicht helfen, das Problem zu identifizieren.

UPDATE Der Link wurde jetzt korrigiert.

8voto

Hans Punkte 91

Luke hat einen ziemlich guten Artikel darüber geschrieben ziemlich geradeaus .. versuchen Sie dies

Lukes Lösung

Begründung (Zitat aus seinem Artikel (ohne Flüche)) ".. Das Problem mit dem obigen Code ist, dass er nicht funktioniert, wenn Ihr Zertifikat nicht gültig ist. Warum sollte ich auf einer Webseite mit einem ungültigen SSL-Zertifikat posten? Weil ich geizig bin und keine Lust hatte, Verisign oder einen der anderen Anbieter zu bezahlen. **- *s für ein Zertifikat zu meiner Testbox, also habe ich es selbst signiert. Als ich die Anforderung gesendet habe, wurde mir eine schöne Ausnahme angezeigt:

System.Net.WebException Die zugrunde liegende Verbindung wurde geschlossen. Konnte keine Vertrauensbeziehung zum Remote-Server aufbauen.

Ich weiß nicht, wie es Ihnen geht, aber für mich sah diese Ausnahme wie etwas aus, das durch einen dummen Fehler in meinem Code verursacht wurde, der dazu führte, dass die POST fehlschlug. Also suchte ich weiter, optimierte und tat alle möglichen seltsamen Dinge. Erst nachdem ich die ***n-Sache gegoogelt hatte, fand ich heraus, dass das Standardverhalten nach dem Auftreten eines ungültigen SSL-Zertifikats darin besteht, genau diese Ausnahme auszulösen. .."

5voto

Amir-ranjbar Punkte 81

Fügen Sie dies hinzu:

 ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;}

direkt vor der Zeile, in der Sie den Dienst aufrufen

3voto

Ich bin gerade auf dieses Problem gestoßen. Meine Lösung war, die Systemzeit durch manuelle Synchronisierung mit den Zeitservern zu aktualisieren. Das können Sie tun:

  • Klicken Sie mit der rechten Maustaste auf die Uhr in der Taskleiste
  • Wählen Sie Adjust Date/Time
  • Wählen Sie die Internet Time Registerkarte
  • Klicken Sie auf Change Settings
  • Wählen Sie Update Now

In meinem Fall war die Synchronisierung fehlerhaft, so dass ich mehrmals darauf klicken musste, bevor sie korrekt aktualisiert wurde. Wenn die Aktualisierung weiterhin fehlerhaft ist, können Sie auch versuchen, einen anderen Zeitserver aus der Server-Dropdown-Liste zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X