我有一个带TCP绑定的自托管WCF服务,现在尝试在SSL上进行分层。
我从CA获得的证书有两个“主题备用名称”值:
www.mysite.com
mysite.com
我只想向WCF客户提供“mysite.com”,不知何故这是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的Identity属性来解决问题。“
我不希望客户对www.mysite.com有任何了解。我只希望他们使用服务提供的东西,我希望服务器只呈现mysite.com。
答案 0 :(得分: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>
或在创建端点时在代码中设置它。