我正在尝试托管使用" Transport"的WCF服务。安全和"证书"作为Windows Server 2008 R2中的客户端身份验证,我收到以下错误:
"服务的SSL设置' SslRequireCert'不符合IIS&SslNegotiateCert'"
我在Windows 7中的IIS 7.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)作为网站托管网络服务 2)安装了服务器证书 3)启用Https并分配端口并分配证书 4)在网站 - &gt; SSlCertificates - &gt;启用接受(也尝试使用Accept和Require SSL)不起作用。 5)应用程序池标识:.net 4.0,启用32位:true
在搜索此错误时,我在microsoft中找到了以下修补程序,它是.net framework 3.5.1的一部分。所以我在Windows Server 2008 R2中安装了.net framework 3.5.1功能,但仍然没有运气。
https://support.microsoft.com/en-us/kb/976566
目前,我没有想法,任何帮助将不胜感激。感谢
答案 0 :(得分:0)
在我将安全模式从&#34; Transport&#34; to&#34; TransportWithMessageCredential&#34;并在Message层而不是Transport中传递clientAuthentication。以下是配置更改:
<binding name="TestService_Client2_ITestService">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="Certificate"/>
</security>
</binding>
我不知道为什么,但由于某种原因,在Windows Server 2008 R2中,通过传输层传递证书不起作用(或)可能有一个我需要打开的设置。知道根本原因会很棒。