无身份验证的WCF传输安全性

无身份验证的WCF传输安全性,wcf,security,authentication,Wcf,Security,Authentication,是否可以在没有身份验证的情况下实现传输安全性?我很清楚它的缺陷,但是我不能在客户端安装证书。 似乎我可以将WSHttpBinding.SecurityMode设置为Transport,将ClientCredentialType设置为HttpClientCredentialType.None,但当我尝试调用该服务时,出现以下异常: 向发出HTTP请求时出错。这可能是因为在HTTPS情况下,服务器证书未正确配置为HTTP.SYS。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的 我不认为这是客

是否可以在没有身份验证的情况下实现传输安全性?我很清楚它的缺陷,但是我不能在客户端安装证书。 似乎我可以将WSHttpBinding.SecurityMode设置为Transport,将ClientCredentialType设置为HttpClientCredentialType.None,但当我尝试调用该服务时,出现以下异常:

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

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


如果我已将ClientCredentialType设置为“无”,为什么它要查找服务器证书?

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

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

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


下面是一个指向的链接,解释如何为此目的在IIS中设置证书。不一定是谷歌提供的最好的服务,只是我发现它涵盖了所有要点的第一个。MSDN也应该详细介绍这一点

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

有几件事需要检查:

  • 您可以通过浏览器中的HTTPS访问WSDL或站点上的其他资源吗
  • 执行此操作时,您是否收到有关证书的任何警告 如果无法通过HTTPS访问WSDL或站点上的其他资源,则服务器上未配置HTTPS


    如果您收到有关证书的警告,则您没有客户端信任的证书。这里有三种选择;一个是从类似的地方获得一个有效的证书,该证书将被信任,另一个是将证书安装在用户存储区的受信任部分(您不能像您提到的那样执行),最后一项是关闭客户端WCF配置中的证书吊销。

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


    这是因为我的web服务URL是由VisualStudio2010服务引用创建者使用特定端口80创建的。当我将此更改为绑定时,绑定工作正常。

    除了我下面的答案之外,如果您希望依赖ISA服务器之类的东西来执行HTTPS加密,而不是承载Web服务的IIS服务器,那么还有其他障碍。如果这是您的要求,最好进入一个新问题。如何在客户端的WCF配置中关闭证书吊销?将吊销模式设置为“无”。服务器证书用于向客户端标识服务器。如果证书上的公用名与客户端连接的URL不匹配,默认操作是中止连接。@JeremyWiebe Cheers-我指的是WCF通信上下文中的各方。我会澄清的。