6

是否可以在没有身份验证的情况下获得传输安全性?我很清楚它的缺陷,但 atm 我无法在客户端安装证书。看来我可以将 WSHttpBinding.SecurityMode 设置为 Transport 并将 ClientCredentialType 设置为 HttpClientCredentialType.None,但是当我尝试调用该服务时,我得到了这个异常:

向https://[MyService]发出 HTTP 请求时出错。这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。

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

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

4

3 回答 3

6

您可以在没有身份验证的情况下进行 HTTPS 通信,但您不能在没有证书的情况下进行 HTTPS 通信,因为 HTTPS 加密使用证书。

有几件事需要检查:

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

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

如果您收到有关证书的警告,那么您没有客户端会信任的证书。这里有三个选项;一种是从像Verisign这样的受信任的地方获取有效证书,另一种是将证书安装在用户商店的受信任部分(您不能像您提到的那样做),最后是关闭客户端的 WCF 配置中的证书吊销。

于 2008-10-13T15:08:36.823 回答
1

您设置的内容看起来与您想要的内容相符。

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

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

这是一篇博客文章的链接,该文章解释了如何为此目的在 IIS 中设置证书。不一定是最好的谷歌,只是我发现的第一个涵盖了所有重要点。MSDN 也应该详细介绍这一点。

于 2008-10-10T00:30:56.017 回答
0

即使安全模式设置为传输并且客户端凭据类型设置为无,我也遇到了您描述的错误。

这是因为我的 Web 服务 URL 已由 Visual Studio 2010 服务引用创建者创建为http://www.myservice.com:80/myservice.asmx并具有特定端口 80。当我将其更改为http ://www.myservice.com/myservice.asmx绑定工作正常。

于 2013-04-22T12:02:13.017 回答