2011-09-28 66 views
4

我有一个使用TCP绑定的自托管WCF服务,现在尝试在SSL上进行分层。SSL服务器证书存在WCF的一个名称?

我从CA获得的证书有“主题备用名称”两个值:

www.mysite.com 
mysite.com 

我只想提出“mysite.com”到WCF客户端,不知何故这www.mysite.com( CA补充说,我没有要求www.mysite.com)。

我正在使用下面的代码服务器端。我需要做些什么才能“隐藏”www.mysite.com地址?

svc.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.CurrentUser , StoreName.My , X509FindType.FindBySubjectName , "mysite.com"); 

当客户端连接,因此,现在我得到

“身份检查失败传出消息,远程端点的预期DNS身份是‘mysite.com’,但远程端点提供DNS声明'www.mysite.com'。如果这是一个合法的远程端点,您可以通过在创建通道代理时明确指定DNS标识“www.mysite.com”作为EndpointAddress的标识属性来解决此问题。“

我不想要e客户知道关于www.mysite.com的任何信息。我只希望他们使用服务器提供的内容,我希望服务器只提供mysite.com。

+1

这是一个错误:http://connect.microsoft.com/VisualStudio/feedback/details/683174/wcf-x509-certificate-validation-only-checks-last-dnsname-in-subject-alternative-name – UserControl

回答

0

为什么要隐藏它?具有SAN替代品的证书意味着它对所有这些FQDN都是有价值的,因此它可以在www.mysite.com和mysite.com上运行。

另外,从你打电话给SetCertificate的外观,证书的主题名称是你想要的,mysite.com,这是首先检查的内容。

错误消息的全文进来

身份检查的形式失败传出消息。远程端点的预期DNS身份 是“X”,但远程端点提供的DNS 要求“Y”

现在,这个具有什么做的证书,但IIS主机配置为,或者在自托管的情况下,主机/机器Windows配置为。您可以通过为endpoint添加新的配置设置来覆盖WCF将使用的主机;

<identity> 
    <dns value="mysite.com"/> 
</identity> 

或在创建端点时将其设置为代码。

+0

我想隐藏它,因为我的客户端应用程序正在寻找mysite.com而不是www.mysite.com。我编辑了我的原始文本以包含完整的错误消息。谢谢。 – Snowy