从控制台应用程序通过HTTPS / SSL使用WCF服务

时间:2012-07-19 16:23:32

标签: wcf ssl

我在IIS下运行的WCF服务配置为使用SSL,并且已经安装并运行了有效的证书。 访问网站

https://my_website/anypage.aspx 

我可以访问该页面。 访问网址

https://my_website/mywcfservice.svc 

我可以看到网络服务页面: “您已经创建了一项服务。要测试此服务,您需要创建一个客户端并使用它来调用服务(...)”。请注意,无论如何我都会收到警告页面,上面写着“此网站的安全证书存在问题”,点击“继续浏览此网站”。

在服务器端,web.config配置为:

<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

...                  ...                                 

在客户端,我没有使用代理或配置文件。我只使用代码进行连接,例如:

this.Channel = new ChannelFactory<T>(binding, new EndpointAddress(serviceUri));
((WSHttpBinding)this.Channel.Endpoint.Binding).Security.Mode = SecurityMode.Transport;
((WSHttpBinding)this.Channel.Endpoint.Binding).Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
this.Channel.CreateChannel();

我有强大的规则从客户端按代码连接,所以我不能用其他方式。通道打开很好,但是当我调用任何方法时,我收到错误“远程证书根据验证程序无效。”

没有https工作正常。

在客户端,我在“受信任的根证书颁发机构\证书”中有许多证书。所有这些都在服务器端也受到信任。

在客户端或服务器端可能出现问题? 也许我需要在客户端指定一个非常精确的证书?

任何帮助表示感谢,谢谢。

1 个答案:

答案 0 :(得分:3)

  

请注意,无论如何,我都会收到警告页面,上面写着“此网站的安全证书存在问题”,点击“继续浏览此网站”。

您的客户端计算机不信任您在服务器上使用的SSL证书。您收到的WCF错误等同于您尝试在浏览器中点击该服务时收到的消息。

  

在客户端,我在“受信任的根证书颁发机构\证书”中有许多证书。所有这些都在服务器端也受到信任。

您需要配置客户端计算机以正确信任您的SSL证书。一旦您可以在浏览器中访问该服务而没有任何错误,您的客户端代码就可以正常工作。