WCF客户端证书认证,服务的SSL设置'SslRequireCert'不匹配IIS 'Ssl,

本文关键字:SslRequireCert 不匹配 Ssl IIS SSL 证书 客户端 认证 服务 WCF 设置 | 更新日期: 2023-09-27 18:18:18

我有一个网站,它将被一些客户端调用,这些客户端将使用客户端证书进行身份验证,而其他客户端则不会,因此我必须为客户端证书设置iis设置以允许。这在windows 7专业上工作得很好,但是当我尝试在windows 7的虚拟服务器设置上运行时,我得到以下错误

服务'SslRequireCert'的SSL设置与IIS ' SSL, SslNegotiateCert'的SSL设置不匹配

所有的iis设置在两个环境之间似乎是相同的

杰瑞米

WCF客户端证书认证,服务的SSL设置'SslRequireCert'不匹配IIS 'Ssl,

这可能是由于IIS设置与WCF配置不匹配引起的。

    <binding name="TransportWithCertificate">
      <security mode="Transport">
        <transport clientCredentialType="Certificate" />
      </security>
    </binding>

错误消息非常明确。它说'SSLRequireCert'或clientCredentialType="证书"不匹配'Ssl, SslNegotiateCert'或客户端证书的IIS设置:接受。要在IIS中修复此问题,需要执行ClientCertificates: Require.

在我的情况下,Server 2008 R2/IIS 7.5与Windows 7/IIS 7.5表现不同&Windows 8.1/IIS 8.5。在这两个桌面操作系统版本中,我都可以使用需要SSL/客户端证书:接受来运行应用程序。

但是在Server 2008 R2/IIS 7.5上,页面无法加载服务'SslRequireCert'的错误SSL设置不匹配IIS ' SSL, SslNegotiateCert'更改为客户端证书:要求解决问题。

我在调试一个需要客户端证书的WCF服务时得到了这个错误。它在Web中有以下设置。配置:

<bindings>
  <basicHttpsBinding>
    <binding name="basicHttps" maxReceivedMessageSize="10485760">
      <readerQuotas maxStringContentLength="7340320" maxArrayLength="2147483647"/>
      <security mode="Transport">
        <transport clientCredentialType="Certificate"/>
      </security>
    </binding>
  </basicHttpsBinding>
</bindings>

这给了我从Visual Studio调试时的错误。在注释了'security'节点后,这个错误消失了:

<bindings>
  <basicHttpsBinding>
    <binding name="basicHttps" maxReceivedMessageSize="10485760">
      <readerQuotas maxStringContentLength="7340320" maxArrayLength="2147483647"/>
      <!--<security mode="Transport">
        <transport clientCredentialType="Certificate"/>
      </security>-->
    </binding>
  </basicHttpsBinding>
</bindings>