解決 SOAP SSL/TLS 安全通道信任問題
問題:
使用者在存取 SOAP Web 服務時可能會遇到「無法建立 SSL/TLS 安全通道的信任關係」錯誤。 即使該服務之前已正常運行並且仍然可以從其他位置訪問,也可能會發生這種情況。
根本原因:
此錯誤通常源自於伺服器上的 SSL 憑證問題。 伺服器主機名稱和憑證主機名稱不符或使用自簽名憑證是常見的罪魁禍首。
解決問題(繞過證書驗證):
繞過 SSL 憑證驗證(謹慎使用):
方法 1(Lambda 表達式):
<code class="language-csharp">System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);</code>
方法 2(有主機名稱檢查的 Lambda 表達式):
<code class="language-csharp">System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, cert, chain, errors) => cert.Subject.Contains("YourServerName"));</code>
方法 3(傳統方法的主機名稱檢查):
<code class="language-csharp">ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate); // Validation Callback private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors) { bool result = cert.Subject.Contains("YourServerName"); return result; }</code>
重要安全說明:
這些解決方案會停用證書驗證。這對於外部伺服器來說風險很大,並且只應在安全隱患得到充分理解和接受的情況下應用於內部伺服器。 使用不當可能會使您的系統容易受到中間人攻擊。
以上是為什麼我的 SOAP Web 服務中出現「SSL/TLS 安全通道信任關係」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!