密码学异常‘keyset不存在’,而仅通过WCF

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我有一些代码可以调用使用X.509认证保护的第三方Web服务。

部署时,将通过WCF服务调用此代码。我已经添加了第二个单元测试,它调用WCF服务,但是这在CryptographicException,讯息"Keyset does not exist"当我在第三方Web服务上调用一个方法时。

我推测这是因为我的WCF服务将尝试使用与我不同的用户来调用第三方Web服务。

在这个问题上,有人能提供更多的线索吗?

提问于
用户回答回答于

这可能是证书上的权限问题。

当运行单元测试时,您将在自己的用户上下文下执行这些测试,这取决于存储客户证书)将有权访问该证书的私钥。

但是,如果WCF服务托管在IIS下,或者作为Windows服务运行在服务帐户(网络服务、本地服务或其他受限帐户)下。

需要对私钥设置适当的权限,以允许该服务帐户访问它。

用户回答回答于

这很可能是因为IIS用户无法访问证书的私钥。你可以通过以下步骤来设置这个。

  1. 开始->运行->MMC
  2. 文件->添加/删除管理单元
  3. 将证书添加到
  4. 选择“计算机帐户”,然后单击“下一步”。
  5. 选择本地计算机(默认值),然后单击Finish
  6. 在控制台根的左侧面板上,导航到证书(本地计算机)->个人->证书
  7. 你的证书很可能在这里。
  8. 右键单击证书->所有任务->管理私钥
  9. 在这里设置你的私钥设置。

扫码关注云+社区