Dot-Net
無法為具有權限“*”的 SSL/TLS 建立安全通道
我必須使用具有 SSL 證書的 PHP 網路服務。我的 .net 3.5 類庫在 Visualstudio 2010 中使用“添加服務引用”來引用 Web 服務(WCF 對嗎?)。
呼叫我收到的網路服務的主要方法時;
無法為具有權限“{base_url_of_WS}”的 SSL/TLS 建立安全通道。
我嘗試了很多,比如
System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); public bool CheckValidationResult(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }但這行不通。我還在我自己的機器上安裝了證書。
*額外資訊;當我在“添加服務引用”中使用 wsdl 位置時,會發生同樣的錯誤。在我嘗試之前,我使用了一個靜態 wsdl。
是的,不受信任的證書可能會導致這種情況。通過在瀏覽器中打開 websservice 來查看 webservice 的證書路徑,然後使用瀏覽器工具查看證書路徑。您可能需要在呼叫 Web 服務的電腦上安裝一個或多個中間證書。當您進一步調查時,您可能會在瀏覽器中看到帶有“安裝證書”選項的“證書錯誤”——這可能是您缺少的證書。
我的特殊問題是 2010 年 7 月升級到其根伺服器後缺少 Geotrust Geotrust DV SSL CA 中間證書 <https://knowledge.geotrust.com/support/knowledge-base/index?page=content&id=AR1422>
(此處保留2020 年更新死連結: https ://web.archive.org/web/20140724085537/https://knowledge.geotrust.com/support/knowledge-base/index ?page=content&id=AR1422 )
這正是我面臨的問題。在其他一些文章中,我得到了更改配置的提示。對我來說,這有效:
<bindings> <basicHttpBinding> <binding name="xxxBinding"> <security mode="Transport"> <transport clientCredentialType="Certificate"/> </security> </binding> </basicHttpBinding> </bindings>
