Heim >Backend-Entwicklung >C++ >Wie behebt man den Fehler „Konnte keine Vertrauensbeziehung für sicheren SSL/TLS-Kanal herstellen' in SOAP-Webdiensten?

Wie behebt man den Fehler „Konnte keine Vertrauensbeziehung für sicheren SSL/TLS-Kanal herstellen' in SOAP-Webdiensten?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-21 08:27:09918Durchsuche

How to Fix

Behebung des Fehlers „Vertrauensbeziehung für sicheren SSL/TLS-Kanal konnte nicht hergestellt werden“ in der SOAP-Webdienstkommunikation

Wenn .NET-Webdienstaufrufe in der Vergangenheit einwandfrei funktioniert haben, Sie jetzt aber die Fehlermeldung „Vertrauensstellung für sicheren SSL/TLS-Kanal konnte nicht hergestellt werden“ erhalten, müssen Sie das zugrunde liegende Problem untersuchen.

Grund:

Dieser Fehler tritt normalerweise auf, wenn eine Diskrepanz zwischen dem vom Webdienst bereitgestellten SSL-Zertifikat und den auf dem Clientcomputer konfigurierten Vertrauenseinstellungen besteht.

Lösung:

Um dieses Problem zu beheben, müssen Sie das SSL-Zertifikat des Webdienstes überprüfen und die Vertrauensbeziehungseinstellungen auf dem Clientcomputer anpassen. Nachfolgend sind drei Methoden aufgeführt:

  • Zertifikatwarnung ignorieren:
<code class="language-csharp">System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);</code>

Dieses Code-Snippet deaktiviert die Zertifikatsüberprüfung und weist den Webdienst an, Zertifikatsprobleme zu ignorieren, sodass die Kommunikation fortgesetzt werden kann. Diese Methode sollte jedoch nur für interne Server verwendet werden, die kein Zertifikat erhalten können.

  • Stellen Sie sicher, dass die Hostnamen übereinstimmen:
<code class="language-csharp">System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, cert, chain, errors) => cert.Subject.Contains("YourServerName"));</code>

Dieses Code-Snippet überprüft das Zertifikat, indem es den Hostnamen im Zertifikat mit dem erwarteten Hostnamen vergleicht. Bei Übereinstimmung ist die Kommunikation erlaubt.

  • Benutzerdefinierte Zertifikatsüberprüfung:
<code class="language-csharp">ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);

private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)
{
    bool result = cert.Subject.Contains("YourServerName");
    return result;
}</code>

Diese Methode beinhaltet die Definition einer benutzerdefinierten Rückruffunktion, um das Zertifikat basierend auf bestimmten Bedingungen zu überprüfen. In diesem Fall prüft der Code, ob der Hostname im Zertifikat mit einem bestimmten Wert übereinstimmt.

Bitte ersetzen Sie „IhrServerName“ durch Ihren tatsächlichen Servernamen. Für welche Methode Sie sich entscheiden, hängt von Ihrer konkreten Situation und Ihrem Sicherheitsbedürfnis ab. Es wird dringend empfohlen, dem Hostnamenabgleich oder der benutzerdefinierten Zertifikatsüberprüfung Vorrang einzuräumen, und es wird nicht empfohlen, Zertifikatwarnungen zu ignorieren, es sei denn, Sie sind sich der Sicherheitsrisiken vollständig bewusst.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Konnte keine Vertrauensbeziehung für sicheren SSL/TLS-Kanal herstellen' in SOAP-Webdiensten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn