2008-10-09 83 views
6

没有验证可以传输安全吗?我很清楚它的缺陷,但atm我不能在客户端安装证书。 看来我可以设置WSHttpBinding.SecurityMode到运输和ClientCredentialType到HttpClientCredentialType.None,但是当我尝试调用服务我得到这个异常:同时使HTTP请求https://[MyService]发生没有验证的WCF传输安全

错误。这可能是由于在HTTPS情况下服务器证书未使用HTTP.SYS正确配置。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。

我不认为这是客户端和服务器之间的安全绑定不匹配,因为我使用由svcutil生成的代理。

如果我已将ClientCredentialType设置为None,它为什么会寻找服务器证书?

+0

除了我下面的回答,如果你希望依靠像ISA服务器这样的东西来执行HTTPS加密,而不是承载你的web服务的IIS服务器,还有其他障碍。如果这是你的要求,那么最好进入一个新的问题。 – 2008-10-10 00:32:03

回答

6

您可以在没有身份验证的情况下进行HTTPS通信,但由于HTTPS加密使用证书,因此无法使用证书进行HTTPS通信。

有几件事情要检查:

  1. 您可以访问WSDL或其他资源,在网站上通过HTTPS在浏览器?
  2. 当您这样做时,您是否收到关于证书的任何警告?

如果您无法通过HTTPS访问站点上的WSDL或其他资源,则服务器上未配置HTTPS。

如果您收到关于证书的警告,那么您没有客户端将信任的证书。这里有三种选择。一个是从Verisign之类的地方获得一个有效的证书,这个证书将被信任,另一个是将证书安装在用户商店的一个可信任部分(你不能像你提到的那样),最后是关闭客户端WCF配置中的证书撤销。

1

你设置的东西看起来正确,你想要什么。

我认为问题与确保传输级别安全性(HTTPS)所需的证书与验证所需的任何证书之间的差异有关。

要执行传输级别安全性,您需要配置IIS服务器的证书以用于其加密。这绝不是用于识别WCF通信中的各方,只是为了确保通信安全。 (用于此HTTPS传输的证书也用于标识服务器,但与WCF标识无关)

以下是指向blog post的链接,说明如何在IIS中为此设置证书。不一定是最好的谷歌必须提供的,只是我发现的第一个涵盖所有重要的点。 MSDN也应该详细介绍这一点。

+0

服务器证书_is_用于向客户端标识服务器。如果证书上的公用名称与客户端连接的URL不匹配,则默认操作是中止连接。 – 2012-07-17 19:51:18

+0

@JeremyWiebe干杯 - 我的意思是在WCF沟通的背景下举办派对。我会澄清的。 – 2012-07-17 20:10:07