具有传输安全性的主机WCF服务,并在IIS7中进行证书身份验证(Windows Server 2008 R2)

具有传输安全性的主机WCF服务,并在IIS7中进行证书身份验证(Windows Server 2008 R2),wcf,iis,windows-server-2008-r2,Wcf,Iis,Windows Server 2008 R2,我正在尝试托管一个WCF服务,该服务在Windows Server 2008 R2中使用“传输”安全性和“证书”作为客户端身份验证,我收到以下错误: “服务'SslRequireCert'的SSL设置与IIS'SslNegotiateCert'的设置不匹配” 我在Windows7的IIS7.5中托管了相同的服务,它运行良好。我无法理解在这种环境下我是否遗漏了什么 这是我的web.config: <system.serviceModel> <services> <

我正在尝试托管一个WCF服务,该服务在Windows Server 2008 R2中使用“传输”安全性和“证书”作为客户端身份验证,我收到以下错误:

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

我在Windows7的IIS7.5中托管了相同的服务,它运行良好。我无法理解在这种环境下我是否遗漏了什么

这是我的web.config:

 <system.serviceModel>
<services>
  <service name="TestService.TestService" behaviorConfiguration="mexBehavior">


    <endpoint address="" binding="wsHttpBinding" contract="TestService.ITestService" bindingConfiguration="TestService_Client2_ITestService" />                               
  </service>                    
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="mexBehavior">           
      <useRequestHeadersForMetadataAddress />
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />                            
    </behavior>
  </serviceBehaviors>        
</behaviors>  
<bindings>
  <wsHttpBinding>                

    <binding name="TestService_Client2_ITestService">             
        <security mode="Transport">

              <transport clientCredentialType="Certificate" />
        </security>         
    </binding>          
</wsHttpBinding>

以下是我在IIS中所做的设置:

1) 作为网站托管Web服务 2) 已安装服务器证书 3) 启用Https并分配了端口,还分配了证书 4) 在网站中-->SSlCertificates-->已启用接受(也尝试了接受和要求SSL)无效。 5) 应用程序池标识:.net 4.0,启用32位:true

在搜索此错误时,我发现了以下来自microsoft的修补程序,它是.net framework 3.5.1的一部分。所以我在WindowsServer2008R2中安装了.NETFramework3.5.1功能,但仍然没有成功


目前,我没有任何想法,任何帮助都将不胜感激。谢谢

在我将安全模式从“Transport”更改为“TransportWithMessageCredential”并在消息层而不是在传输层通过了客户端身份验证后,它成功了。以下是配置更改:

<binding name="TestService_Client2_ITestService">             
    <security mode="TransportWithMessageCredential">

          <transport clientCredentialType="None" />
          <message clientCredentialType="Certificate"/>
    </security>         
</binding> 


我不知道为什么,但由于某些原因,在Windows server 2008 R2中,通过传输层传递证书不起作用(或者)可能存在我需要启用的设置。了解根本原因将是非常棒的。

通过网站-->SSlCertificates-->Accept中的
4)您的意思是
SSL设置
??为了清楚起见,在网站的SSL设置中,您需要选中“需要SSL”复选框,在该复选框下,对于客户端证书,您应该选择“接受”或“需要”。除此之外,一切似乎都正常,您是否使用了其他浏览器来查看它是否有任何区别?Ashkan,我的坏消息是SSL设置。我在1)SslSettings->Require Ssl(选中)&接受(选中)和2)SslSettings-->Require Ssl(未选中)&接受(选中)中尝试了这两个选项。对于这两种变体,它都不起作用。在那个服务器盒上除了IE没有安装其他浏览器。我不确定是否允许我安装其他浏览器…但我认为即使这样也不会有帮助。。。