繁体   English   中英

在特定服务器上调用WCF服务时,“无法通过授权为ssl / tls建立安全通道”

[英]“could not establish secure channel for ssl/tls with authority” when calling WCF service on specific server

我们围绕WCF API服务进行了一些自动化测试,但是我们希望能够在使用新服务器之前快速对其进行测试。 我们目前正以这种方式调用ApiService:

using (var wcfApiServiceClient = new ApiServiceClient())
{
    WcfResponse = wcfApiServiceClient.Request(request);
}

但是请求失败,并显示消息“ Could not establish trust relationship for the SSL/TLS secure channel with authority 'servername:12345'. 当我尝试在浏览器中查看wsdl时,收到了不受信任的证书警告,因此我想这是我的问题。 我已经在我的app.config中尝试了这些东西:

<endpoint ... bindingConfiguration="BasicHttpBinding_IApiService"  
              behaviorConfiguration="DisableServiceCertificateValidation" />
<behaviors>
  <endpointBehaviors>
    <behavior name="DisableServiceCertificateValidation">
      <clientCredentials>
        <serviceCertificate>
          <authentication certificateValidationMode="None"
                          revocationMode="NoCheck" />
        </serviceCertificate>
      </clientCredentials>
    </behavior>
  </endpointBehaviors>
</behaviors>

<system.net>
  <settings>
    <servicePointManager checkCertificateName="false" checkCertificateRevocationList="false" />
  </settings>
</system.net>

<basicHttpBinding>
    <binding name="BasicHttpBinding_IApiService">
      <security mode="Transport" >
        <transport clientCredentialType="None" proxyCredentialType="None" />
      </security>
    </binding>
</basicHttpBinding>

我无法更改服务器上的任何内容,但是当使用.net调用WCF服务时,有什么方法可以忽略ssl错误吗? 谢谢!

当您的Api客户端连接到服务器时,服务器将发回该证书,在这种情况下,该证书不受信任=>握手失败。 我还将尝试使用Windows mmc.exe工具从浏览器下载证书并将其导入客户端计算机的根证书颁发机构中。

希望这可以帮助 :)

我找到了解决方案。 添加此行代码解决了我的问题。 鉴于我绕过了证书警告,因此我想将其视为潜在的安全风险,但是由于我正在测试内部应用程序,因此我对此并不担心。

System.Net.ServicePointManager.ServerCertificateValidationCallback =
            (sender, certificate, chain, sslPolicyErrors) => true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM