我正在尝试让我的WCF服务在我的本地环境中使用基于证书的加密,这样当它出现在实时环境中时,它会与不同域中的机器通信。在尝试实现安全性之前,我的服务工作正常,所以我确信故障不在服务中。
我使用makecert.exe生成了一些证书。首先,我创建了两个我刚才调用的WCFclient和WCFServer,并将它们添加到mmc中当前用户的可信文件夹中。然而,这产生了错误:
传出身份检查失败 信息。预期的DNS身份 远程端点是'localhost' 但是远程端点提供了DNS 声称'WCfServer'。如果这是一个 合法的远程端点,你可以 通过显式解决问题 将DNS标识'WCfServer'指定为 。的身份属性 创建频道时的EndpointAddress 代理
我认为这是因为我将证书发给了一个名为“WCFServer”的不存在的域。所以我创建了另一个证书并给它一个CN“localhost”并试图配置客户端和服务器来使用它。现在我收到这条消息:
根据验证程序,远程证书无效。
我在我的客户端配置中设置了certificateValidationMode =“None”,所以我认为这不是由于证书过期等原因造成的。有谁知道还有什么可能导致这个错误?是因为我试图在客户端和服务器端使用相同的证书,如果是这样,我如何设置配置文件以避免获得有关DNS身份的先前错误消息?
答案 0 :(得分:1)
使用以下客户端端点定义可以避免以前的错误消息:
<endpoint name="..." address="..." binding="..." contract="...">
<identity>
<dns value="WCFServer" />
</identity>
</endpoint>
对于第二个错误,使用PeerTrust
验证模式就足够了。