【问题标题】:X509 Certificate Access to private Key DeniedX509 对私钥的证书访问被拒绝
【发布时间】:2018-01-08 12:25:44
【问题描述】:

我正在从 Computer's Personal Store 中的 PKCS #12 文件(使用 PFXImportCertStore Cryptographic API)导入 X509。

问题:

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

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

注意:

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

【问题讨论】:

    标签: windows ssl cryptography


    【解决方案1】:

    这是一个有一些陷阱的棘手问题。我遇到了同样的问题,几乎绝望了,当我终于在this post找到拯救我的评论时

    我成功为在Network Service 帐户下运行的本地服务执行此操作。

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

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

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

    这就是上面引用的帖子出现的地方,对我来说是最后一个障碍:上述过程似乎只有在您从 MMC 管理单元内将证书导入证书存储时才有效。选择商店localMachine\Personal 并使用上下文菜单导入有问题的证书。 (我选择使私钥可导出,这可能与这里无关)。如果您通过在文件系统中双击它来导入证书,它将被导入到Current User 位置的某个存储中。我曾经这样做,然后将其移动到localMachine\Personal 文件夹并更改了访问权限——这对我来说从来没有工作过。只有在从 MMC 证书管理单元中的 localMachine\Personal 中导入它之后,它才能立即工作......

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

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

    【讨论】:

      最近更新 更多