无法使用权 限'xxxxx.com'建立SSL / TLS的安全通道

问题描述 投票:0回答:2

我正在尝试使用VS2013和WCF针对客户的SOAP Web服务编写客户端。 Web服务本身就在他们的防火墙后面,所以他们已经建立了我正在尝试联系的代理。 (代理似乎是使用MuleSoft的ESB实现的,它可能相关也可能不相关。)

我收到了https:url和用户名/密码。当我将URL加载到浏览器中时,系统会提示我输入用户名/密码,然后我会看到.wsdl。 .wsdl指定了一个我无法访问的内部URL,但我认为这是针对实际站点的。

当我在VS2013中使用代理URL创建服务引用时,系统会提示我输入三次用户名/密码,然后我会在app.config中获得正确的客户端,设置等。

app.config中生成的绑定用于具有安全模式Transport的basicHttpBinding,以及指向该无法访问的内部URL的端点地址。

所以,从生成的绑定,我:

  1. 用我已经给出的代理URL替换不可访问的内部URL。
  2. 将安全模式更改为“TransportWithMessageCredentials” <bindings> <basicHttpBinding> <binding name="MyCustomersServiceSoapBinding"> <security mode="TransportWithMessageCredential" > <message clientCredentialType="UserName" /> </security> </binding> <binding name="MyCustomersServiceSoapBinding1" /> </basicHttpBinding> </bindings>
  3. 用用户名和密码替换ClientCredentials: using(var client = new MyCustomersServiceClient()){var loginCredentials = new ClientCredentials(); loginCredentials.UserName.UserName =“ausername”; loginCredentials.UserName.Password =“apassword”; var defaultCredentials = client.Endpoint.Behaviors.Find<ClientCredentials>(); client.Endpoint.Behaviors.Remove(defaultCredentials); client.Endpoint.Behaviors.Add(loginCredentials); var myData = new MyData { }; var result = client.receiveData(myData); }

当我运行它时,我得到一个例外:

无法使用权​​限'xxxxx.com'建立SSL / TLS的安全通道。

浏览,我发现的大部分内容都表明ssl证书存在问题,但我不确定这是否有意义。如果是这种情况,我希望通过浏览器查看.wsdl时会出现问题。我认为通过删除默认的客户端凭据,我将绕过证书检查。我看到一些关于更加模糊的问题的帖子,这些问题会导致同样的错误消息。

我已经打开了SOAP消息日志记录,但这并没有提供任何信息。它显示失败的传出消息,但没有任何用处。

所以我一直在看Fiddler的交通。我看到两条消息,一条带有Result 200的“Tunnel to”的HTTP消息,以及一条带有Result 401的代理URL的HTTPS消息。

在这一点上,我看到两种可能性:

  1. 我需要安装SSL证书,错误消息的建议方式,或
  2. 问题很简单,我没有以它理解的方式向服务提供用户名/密码,而是拒绝我的连接尝试。

我倾向于后者。我的问题?我对托管服务的系统一无所知。我正在传递用户名/密码,我认为这是WCF的常用机制,而且它不起作用。

最后,问题是:

  • 我是否误导了自己,我确实需要搞乱SSL证书?
  • 如果没有,我在WCF中如何将用户名/密码传递给由MuleSoft ESB托管的HTTPS Web服务? (Mule EE Core Extensions / 3.5.1,如果有帮助的话)。
c# wcf ssl soap mule
2个回答
0
投票

不确定我遇到的问题是否与你的问题有着相同的原因,但为了防止有人这样做,加上requireClientCertificate=true解决了我的问题:

<bindings>
  <customBinding>
    <binding name="bindingName">
      ...
      <httpsTransport requireClientCertificate="true"/>
    </binding>
  </customBinding>
</bindings>

我有相同的错误消息,但我正在使用的Web服务是通过HTTPS并且需要SSL证书作为身份验证。


0
投票

许多端点最近都禁用了TLSV1.0和TLSV1.1

尝试:

CURL https://<<service host>> -v -TLSV1.0

CURL https://<<service host>> -v -TLSV1.2

例如,https://www.comodo.com不允许TLSV1.0或TLSV1.1但允许TLSV1.2。

© www.soinside.com 2019 - 2024. All rights reserved.