我正在使用带有 WIF 的 WCF Web 服务。更多规范,我使用的是 WS2007FederationHttpBinding。在用于开发的 localhost 机器上一切正常。
但是,当尝试使用部署在 IIS 上的服务器进行远程安装并从另一台 PC 启动客户端时,我的通道打开方法失败,并出现以下异常:
X.509 证书 CN=MyOwnCertificate 链构建失败。使用的证书具有无法验证的信任链。更换证书或更改 certificateValidationMode。
(MyOwnCertificate 是使用 makecert 的自签名证书;该证书已插入受信任的根证书颁发机构)。
因此,出于测试目的,我首先尝试通过以下代码删除此约束:
this.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust;
this.ClientCredentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
这确实消除了最初的异常错误。然而 InnerSecurityTokenProvider 现在返回它自己的异常:
“Le message n'a pas pu être traité car l'action 'http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT' n'est pas valide ou non reconnue。 "}
(对不起法语消息)。
有没有办法让自签名证书在这样的远程场景中工作?(我更喜欢,因为我只需要内部使用的证书)
它是否适用于使用 openssl (http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php) 生成的证书?
我们将非常欢迎您的帮助。谢谢。
编辑 06/01/2012 :还按照建议使用签名证书(+吊销列表)进行了测试,在本地工作但在远程失败。证书已按照此处的说明进行定义。我在受信任的根下部署了 CA 证书。IP 和服务器证书部署在 MY(使用 pfx)和 Trusted People(使用 cer)中。还设置了 IIS,以便 NETWORK 帐户可以访问部署在 LOCALMACHINE MY 下的私钥。
编辑 07/01/2012 :当证书由官方 CA 颁发(即 verisign、thawte ...)时,它可以工作