【发布时间】:2013-08-13 12:28:42
【问题描述】:
我收到了this question 中提到的错误:
X.509 证书 CN=Farm 链构建失败。使用的证书具有无法验证的信任链。更换证书或更改 certificateValidationMode。已处理的证书链,但以不受信任的根证书终止。
我不明白为什么会收到此错误,因为我添加了用于向 WCF 服务请求的证书,如下所示:
client.ClientCredentials.Peer.PeerAuthentication.CertificateValidationMode =
X509CertificateValidationMode.ChainTrust;
client.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser,
StoreName.My,
X509FindType.FindBySerialNumber,
"MyCertificatesSerialNumber" );
证书本身是上面显示的商店中的自签名证书。当我点击它显示证书路径时,没有显示错误(根证书也是自签名证书)。根证书已手动导入受信任的根证书颁发机构。
从错误消息中,我预计我的一个证书的认证链中存在错误,但没有。有什么想法吗?
更新
我使用 Internet Explorer 9 作为浏览器来访问网络服务。我以编程方式使用 C# 控制台应用程序。
【问题讨论】:
-
参见第 2 步 blogs.msdn.com/b/jpsanders/archive/2009/09/16/… 确保它在正确的商店中。如果 WCF 服务在 IIS 中运行,则“我的”存储将是应用程序池标识,而不是您。
-
@ta.speot.is 现在我正在尝试通过控制台应用程序从不同的系统访问 Web 服务。使用浏览器,我访问 web 服务没有任何问题,但是运行控制台应用程序(在与浏览器相同的登录用户帐户下)我收到错误消息。即使您链接中提到的步骤与我当前的设置无关,我还是将用户的证书添加到了相应计算机的商店,结果与以前相同。
-
如果你的证书是自签名的,它怎么会有根呢?另外,你用的是什么浏览器? Firefox 有自己的受信任证书存储区,Windows 不共享该证书存储区。 IE 和 Chrome 使用 Windows 信任库。
-
@gtrig:我不明白你的问题。当然,自签名证书可以有根,您可以在证书路径中看到这一点。
-
@Gorgsenegger:证书路径或链由最终(叶)证书和签署它的证书实体以及签署该证书的证书实体组成,依此类推,直到自签名根。如果您的证书是自签名的,则没有其他证书实体对其进行签名,并且路径中不会出现其他证书。如果路径中确实出现了其他证书,那么您的证书不是自签名的。
标签: wcf certificate