当前位置:  开发笔记 > 开发工具 > 正文

CryptographicException'Keyset不存在',但仅限于WCF

如何解决《CryptographicException'Keyset不存在',但仅限于WCF》经验,为你挑选了7个好方法。

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

如果我直接调用代码(使用单元测试),它可以正常工作.

部署后,将通过WCF服务调用此代码.我添加了第二个调用WCF服务的单元测试,但是当我在第三方Web服务上调用方法时,这个CryptographicException消息失败了"Keyset does not exist".

我认为这是因为我的WCF服务将尝试使用不同的用户自己调用第三方Web服务.

任何人都可以解决这个问题吗?



1> Steve Sheldo..:

这很可能是因为IIS用户无权访问证书的私钥.您可以按照以下步骤进行设置...

    开始 - >运行 - > MMC

    文件 - >添加/删除Snapin

    添加证书管理单元

    选择计算机帐户,然后点击下一步

    选择"本地计算机"(默认),然后单击"完成"

    在Console Root的左侧面板上,导航到证书(本地计算机) - >个人 - >证书

    您的证书很可能就在这里.

    右键单击您的证书 - >所有任务 - >管理私钥

    在此处设置您的私钥设置.


我必须允许IIS_IUSRS让它为我工作.
谢谢,只是想指出,如果您使用iis7.5并且应用程序池作为applicationpoolidentity运行,则必须为该文件提供IIS AppPool\DefaultAppPool用户权限.这解决了我的问题.

2> blowdart..:

它可能是证书上的权限问题.

运行单元测试时,您将在您自己的用户上下文中执行这些操作,这取决于客户端证书所在的商店是否可以访问该证书的私钥.

但是,如果您的WCF服务托管在IIS下,或者作为Windows服务,它可能会在服务帐户(网络服务,本地服务或其他一些受限帐户)下运行.

您需要在私钥上设置适当的权限,以允许该服务帐户访问它.MSDN有详细信息


我以管理员身份运行我的APP,问题就消失了.

3> 小智..:

我昨晚有同样的问题.私钥的权限设置正确,除了Keyset不存在错误外,一切都很好.最后,结果证明证书首先导入当前用户存储,然后移动到本地计算机存储.但是 - 没有移动私钥,这仍然在

C:\ Documents and settngs\Administrator ...

代替

C:\ Documents and settngs \所有用户......

正确设置了密钥的Altough权限,ASPNET无法访问它.当我们重新导入证书以便将私钥放在All users分支中时,问题就消失了.


在3个小时后,这解决了我的问题 - 谢谢.我使用[FindPrivateKey](http://msdn.microsoft.com/en-us/library/aa717039.aspx)示例,并且很困惑为什么它似乎在我的用户的密钥库中,即使它出现在LocalMachine中通过MMC管理单元.

4> Md. Ilyas Ha..:

从IIS浏览时解决"密钥集不存在": 它可能是私有权限

查看并授予权限:

    运行> MMC>是

    点击文件

    单击添加/删除管理单元...

    双击证书

    电脑帐户

    下一个

    单击证书(本地计算机)

    点击个人

    单击"证书"

给予许可:

    右键单击证书名称

    所有任务>管理私钥......

    添加并授予权限(添加IIS_IUSRS并赋予它权限对我有用)



5> 小智..:

尝试从Visual Studio运行WCF应用程序时遇到同样的问题.通过以管理员身份运行Visual Studio解决了这个问题.



6> 小智..:

我遇到过这个问题,我的证书有私钥,但是我收到了这个错误("Keyset不存在")

原因:您的网站在"网络服务"帐户下运行或具有较少的权限.

解决方案:将应用程序池标识更改为"本地系统",重置IIS并再次检查.如果它开始工作它是权限/更少权限问题,您可以模拟然后使用其他帐户.



7> 小智..:

完全令人沮丧,我遇到了同样的问题并尝试了上述大部分内容.导出的证书正确地具有读取文件的权限C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys,但事实证明它没有该文件夹的权限.添加它,它工作

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有