2012-02-08 68 views
16

我有一个具有消息安全性的WCF服务身份验证具有消息安全性的WCF路由

我想为负载平衡设置一个路由服务。

出于某种原因,这是行不通的,我已经启用includeExceptionDetailInFaults看到异常,因此在客户端我看到:未提供

客户端证书。在ClientCredentials中指定客户端证书 。

看来证书不是从router-> service转发的。

当前客户端/路由器/服务在同一台机器上,所以我拥有所有的证书,但是如果我将它们部署在不同的机器上,路由器必须拥有私钥吗?另外,如果我想在路由器和服务之间建立一个不安全的连接(卸载安全性),我该如何提供主叫方的身份?

编辑: 对于所有的客户机/路由器(服务器&客户端)/ Server的安全配置相同:不提供

  <security mode="Message"> 
       <message clientCredentialType="Certificate" negotiateServiceCredential="false" 
        algorithmSuite="Default" establishSecurityContext="false" /> 
      </security> 
+6

可以显示3个配置文件吗? – 2012-02-15 13:15:47

回答

1

客户端证书。在ClientCredentials中指定客户端证书。

当服务证书与主机域名不匹配时,我看到了这个错误。

如果您仍然看到此问题,可以发布一些配置条目吗?

+0

证书与主机名称不匹配。我现在使用'localhost'或IP。但它仍然应该工作..这是一个已知的错误? – Maxim 2012-03-15 14:17:06

+0

您可以尝试[WinHttpCertCfg.exe](http://msdn.microsoft.com/en-us/library/windows/desktop/aa384088(v = vs.85).aspx)查看证书是否正确安装使用密钥的必要权限。 – 2012-03-15 14:29:10

+0

我不认为这会有所帮助,我以管理员身份运行这些应用程序,以便我拥有足够的权限。 – Maxim 2012-03-27 21:02:31

0

1)首先尝试在代码中设置客户端的证书。

ChannelFactory<IService1> factory = 
      new ChannelFactory<IService1>("Service1_Endpoint"); 
factory.Credentials.ServiceCertificate.SetDefaultCertificate(
      System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, 
      System.Security.Cryptography.X509Certificates.StoreName.My, 
      System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, 
      "<SeriveCerificateName>"); 

如果你真的有证书有问题请您及时在应用程序启动时得到的异常。

2)如果没有例外,请检查双方的服务证书的指纹。

相关问题