16

我有一个带有 Message Security Authentication的 WCF 服务。

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

由于某种原因它不起作用,我启用了 includeExceptionDetailInFaults 来查看异常,所以在客户端我看到:

未提供客户端证书。在 ClientCredentials 中指定客户端证书。

似乎证书不是从路由器->服务转发的。

目前客户端/路由器/服务在同一台机器上,所以我拥有所有证书,但如果我将它们部署在另一台机器上,路由器是否必须拥有私钥?

另外,如果我想在路由器和服务之间建立非安全连接(卸载安全性),我该如何提供调用者的身份?

编辑:对于所有客户端/路由器(服务器和客户端)/服务器,安全配置相同:

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

4 回答 4

2

有很多文章说微软不支持这种情况,这是真的。

本文解释了如何编写自己的自定义解决方案来为所有客户端/路由器/服务提供安全性。

于 2014-11-05T15:17:23.880 回答
1

未提供客户端证书。在 ClientCredentials 中指定客户端证书。

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

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

于 2012-03-13T22:39:14.430 回答
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) 如果没有异常,则检查双方服务证书的指纹。

于 2012-04-08T10:11:25.050 回答
-1

这篇博文解释说微软不支持这种情况-

http://blogs.microsoft.co.il/blogs/applisec/archive/2011/12/12/wcf-routing-and-message-security.aspx

于 2012-04-15T08:52:01.703 回答