Heim >Backend-Entwicklung >C++ >Wie behebt man den Fehler „Konnte keine Vertrauensbeziehung für sicheren SSL/TLS-Kanal herstellen' in SOAP-Webdiensten?
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:
<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.
<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.
<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!