X509证书访问私钥被拒绝

时间:2015-07-07 03:48:57

标签: windows ssl cryptography

我正在计算机个人商店中从PKCS#12文件(使用PFXImportCertStore Cryptographic API)导入X509。

问题:

在"本地服务"下运行的任何进程;帐户或任何非管理员帐户无法访问privates密钥(Windows限制为管理员用户)。

如何向非管理员用户和本地服务授予对证书私钥的访问权限?

注意:

由于多个进程使用证书,我更喜欢使用计算机存储而不是用户的存储。

1 个答案:

答案 0 :(得分:1)

这是一个棘手的问题。我遇到了同样的问题并且接近绝望,当我终于找到了在this post

中保存我的评论时

我成功完成了在Network Service帐户下运行的本地服务。

首先,可以选择授予其他用户访问MS证书库中证书的私钥的权限。我已将此类别归类为德鲁伊知识:此选项在上下文菜单中可用(右键单击证书),但 如果证书位于{ {1}}存储。在条目localMachine\Personal中,您会找到子条目All tasks。这是在其他商店中可用,甚至在Manage Private Keys商店也没有。

此条目将打开一个对话框,允许您为其他用户添加证书的访问权限。在这里,下一个障碍等待您:默认设置是搜索域中的用户,而不是本地计算机上的用户。除非您更改搜索过滤器,否则可能找不到所需的用户。

对于这个结果我通过谷歌搜索来得非常快,但它没有帮助。我可以让服务运行,但前提是我将服务用户更改为登录帐户,这不是我想要的(这导致,顺便说一下,解决方法:为服务创建本地用户帐户并从内部导入证书该用户帐户。然后您可以将证书放在几乎任何商店中,它将正常工作)

这就是上面引用的帖子,这是我的最后一个障碍:只有从MMC管理单元中将证书导入证书存储区时,上述过程似乎才有效。选择商店CurrentUser\Personal并使用上下文菜单导入相关证书。 (我选择将私钥导出,这可能与此处相关或不相关)。如果通过在文件系统中双击证书来导入证书,则会将其导入localMachine\Personal位置的某个商店。我曾经这样做,然后将其移动到Current User文件夹并更改了访问权限 - 这确实从未为我工作。只有在MMC证书管理单元中的localMachine\Personal内导入后,它才会立即生效...

(另请注意,您必须将证书放入服务用户可以找到的商店。您当前的用户商店通常不允许这样做,因此无论如何localMachine是更好的选择)

我不知道您之后是否可以移动证书,但这很容易检查系统..

相关问题