Dot-Net

無法為具有權限“*”的 SSL/TLS 建立安全通道

  • December 16, 2010

我必須使用具有 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 )

這正是我面臨的問題。在其他一些文章中,我得到了更改配置的提示。對我來說,這有效:

&lt;bindings&gt;
 &lt;basicHttpBinding&gt;
   &lt;binding name="xxxBinding"&gt;
     &lt;security mode="Transport"&gt;
       &lt;transport clientCredentialType="Certificate"/&gt;
     &lt;/security&gt;
   &lt;/binding&gt;
 &lt;/basicHttpBinding&gt;
&lt;/bindings&gt;

引用自:https://stackoverflow.com/questions/4463485