0

有人可以描述或(最好)参考.NET框架如何验证域证书吗?

我正在尝试连接到配置了具有证书传输安全性的 BasicHttpBinding 的 WCF 服务。服务在机器 1 上,客户端在机器 2 上。两台机器都加入了域。服务证书由域的证书颁发机构颁发。但是,当客户端(在我的例子中为 Visual Studio 添加服务引用向导)与服务协商时,它会弹出一条警告消息,其中包含证书不受信任的三个可能原因:

  1. 公司颁发的安全证书不在不信任列表中。它可能是值得信赖的。
  2. 安全证书日期有效。
  3. 主机“管理员”的安全证书与您尝试查看的页面名称不匹配。(警告!!)

但我在问原因1,为什么?

另一方面,如果我使用 WcfTestClient,它会弹出以下错误:

URI: https://ip:port/svc   
     Metadata contains a reference that cannot be resolved: 'https://ip:port/svc'.   
     Could not establish trust relationship for the SSL/TLS secure channel with authority 'ip:port'.   
     The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.   
     The remote certificate is invalid according to the validation procedure.HTTP GET Error.

URI: https://ip:port/svc   
    There was an error downloading 'https://ip:port/svc'.   
    The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.   
    The remote certificate is invalid according to the validation procedure.

那么有人可以告诉我这里发生了什么吗?服务证书如何验证?请不要告诉我写一个 PermissivePolicy 来覆盖默认程序?

4

1 回答 1

1

你在这里打了两个支票:

  1. 证书“主题”或“备用名称”字段必须与主机名匹配
  2. 证书的颁发者(或原始证书,如果它是自签名的)必须添加到客户端计算机上的“根”证书存储区

修复此错误很简单 - 只需使用正确的主机名重新颁发证书并将所需部分添加到对等方的“根”存储。

于 2013-09-09T07:24:56.867 回答