为什么我会收到此错误,这到底是什么意思?除了不匹配的证书设置之外,还有其他可能吗?
我有一个本地运行的单元测试,它在我们的数据中心命中 ADFS 代理以进行 Active Federation,然后命中在 Azure 中运行的 WCF Web 服务(Web 角色)。客户端出错并出现 MessageSecurityException。所以查看服务器的服务日志,它记录了异常:
Cannot resolve KeyInfo for decryption: KeyInfo 'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 1,
Clause[0] = EncryptedKeyIdentifierClause(EncryptedKey = abcdefg123456==, Method 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p')
)
', available tokens 'System.ServiceModel.Security.AggregateTokenResolver'.
我在网上找到的一切都表明我在客户端和服务器之间存在证书不匹配。但是我已经对这些证书引用进行了双重、三重和四重检查,它们是相同的。客户端(本地单元测试)端点:
<endpoint address="https://mydomain.com/TestService.svc"
binding="customBinding"
bindingConfiguration="WS2007FederationHttpBinding_ISayHelloService"
contract="ActiveFederationHelpers.Tests.ISayHelloService"
name="WS2007FederationHttpBinding_ISayHelloService">
<identity>
<certificateReference findValue="D4ECD7FF6A551FAA040BA0B62B77B8EA0F11CD16"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindByThumbprint" />
</identity>
</endpoint>
我的服务器的服务配置(我 RDP'd 到一个 Azure 实例从那里拉来确认它真的是我认为的那样):
<serviceCertificate>
<certificateReference findValue="D4ECD7FF6A551FAA040BA0B62B77B8EA0F11CD16" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
</serviceCertificate>
我已确认这些证书已安装在我的本地计算机(单元测试)和 Azure 服务器(Web 服务服务器)上。而且我什至已经确认指纹是我的配置中的内容。我让这一切都在本地环境中成功运行。唯一的区别是证书、URI 和 Azure 的引入。
我仔细检查了其他一些事情:
- 不,我没有复制/粘贴带有 unicode 字符的指纹。我正在为我的服务重复使用我的 SSL 证书,并且 SSL 工作得很好,所以它不是指纹中的错字。
- 该证书没有旧版本或替代版本可能会让我感到困惑。就像我说的那样,每次确保安装它时,我一直在检查证书的指纹(在 MMC -> Certs 中)。