我们遇到了WCF问题 - 我们在尝试连接时遇到以下错误。对于各种配置有很多建议,尝试过它们我们可以使用一些帮助。
我们使用HTTPS来实现传输安全性,使用我们从GoDaddy获得的真实SSL证书。当我们浏览网站上的网页时,它似乎已安装并正常工作。没有身份验证,我们可以正确连接到我们的WCF服务。
对于身份验证,我们使用自己创建的客户端证书。在我们使用带有自签名服务器证书的消息安全性时,这些客户端证书在我们切换到HTTPS之前工作正常(这很痛苦,因为我们必须让客户端安装服务器证书)。
错误 客户端身份验证方案“匿名”禁止HTTP请求。 内部异常:远程服务器返回错误:(403)禁止
服务器配置文件
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="NewBinding0">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="WcfService1.Service1">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="NewBinding0" contract="WcfService1.IService1" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust" />
</clientCertificate>
<serviceCertificate findValue="....." x509FindType="FindByThumbprint" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add scheme="https" binding="wsHttpBinding" bindingConfiguration="NewBinding0" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
客户端配置文件
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior0">
<clientCredentials>
<clientCertificate findValue="customuser1"
storeName="TrustedPeople" x509FindType="FindBySubjectName" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="NewBinding0">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://www.insertoursitename.com/WcfService1/Service1.svc"
behaviorConfiguration="NewBehavior0" binding="wsHttpBinding"
bindingConfiguration="NewBinding0" contract="ServiceReference1.IService1"
name="wsHttpBinding_IService1" />
</client>
</system.serviceModel>
答案 0 :(得分:0)
我的问题与你的问题非常相似,我会在回答问题之前描述我的情景。
浪费了一整天++尝试各种设置,阅读有关注册表更改的博客,将证书服务器端置于不同的证书存储区,更改配置文件设置等,无需解析。
答案非常简单,检查本地计算机\受信任的根证书颁发机构服务器端,并删除任何非根CA(即不应存在的那些,IssuedTo NOT EQUALS IssuedBy)
客户端证书本身不需要安装在服务器上,只有可以验证它的根CA必须安装在服务器端的LocalComputer \ Trusted Root证书颁发机构中。