我遇到了一个奇怪的问题,我用Google搜索并用Google搜索没有结果。我正在尝试在Windows Server 2008 R2上为wcf服务应用程序设置证书。我已经将证书导入localmachine个人商店,我得到了可怕的
"Keyset does not exist...the certificate ... must have a private key that is capable of key exchange. The process must have access rights for the private keys."
我尝试使用mmc中的“管理私钥”选项设置私钥的权限,也尝试手动设置私有密钥文件的权限,该文件位于C:\ programdata \ microsoft \ crypto \ RSA \ MachineKeys的。我通过使用findprivatekeys工具验证我正在修改正确的文件,并尝试使用WSE X.509证书工具。为了理智,我甚至给文件上的“Everyone”提供了读取权限,但仍无效。
这里有什么我想念的吗?我正在使用IIS7,我通常可以访问IIS_IUSRS组的文件。所有这些在VM上的其他测试中都运行良好。我甚至在其他机器上使用完全相同的证书,他们在那里工作......
我迷路了...我注意到的一件事是,如果我在“管理私钥”对话框中编辑权限,那么当我查看文件的权限时,安全设置更改不会反映出来,反之亦然。文件还能在哪里?无论如何,我从两个地方都获得了最大的许可,没有运气。
答案 0 :(得分:0)
不确定这里发生了什么,但在测试过程中,MachineKeys文件夹的权限被彻底修改 - 所以我删除了除管理员组以外的所有用户的权限,删除了问题证书(通过mmc )并再次重新导入。然后,我为该私钥添加了IIS_IUSRS读取和执行权限,我似乎已经备份了。
在相关的说明中,我使用aspnet_regiis -pi为其他东西导入密钥对,但是“安全句柄已关闭”失败了。修复MachineKeys文件夹上的权限也修复了...