使用证书致电服务:错误-“密钥集不存在”

Abi*_*lva 4 c# security service wcf certificate

我目前正在尝试访问第三方提供的服务。他们已向我们颁发了PKCS格式的证书。证书安装在“本地计算机-受信任的根目录”中。

我们的应用程序在运行时会找到该证书,并将其发送到由第三方托管的身份验证URL,在此进行身份验证并颁发SAML令牌。然后将其用于调用实现我们所需功能的实际服务。

当我通过开发机器[Windows 7]中的服务引用运行使用该服务的应用程序时,一切运行正常。

现在的痛点是,因为我们在将要进行测试的Citrix环境中,由于

方法中的异常:与目标的“服务URL”进行SOAP安全协商失败。内部异常:System.Security.Cryptography.CryptographicException:密钥集不存在。

任何人都可以帮助我解决此问题,因为无法在本地重现此问题,并且仅在服务器操作系统中发生,不确定是否是特权问题或某些代码问题。

dav*_*mos 6

此问题可能有两个原因:

  1. 证书没有私钥。
  2. 运行您的进程的用户没有读取私钥的权限。

由于您已经在开发环境中启动并运行了此程序,因此请假设原因是2。

如果您尚不知道,则需要确定您的进程在测试服务器上运行的用户帐户。然后在测试服务器上打开MMC并添加“证书”管理单元。查找证书,右键单击并选择All Tasks|。Manage Private Keys...并授予用户读取权限。

有关更多信息,请访问:

X509Certificate-密钥集不存在

CryptographicException'密钥集不存在',但仅通过WCF

CryptographicException服务失败–密钥集不存在

WCF:密钥集不存在