Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows X509对私钥的证书访问被拒绝_Windows_Ssl_Cryptography - Fatal编程技术网

Windows X509对私钥的证书访问被拒绝

Windows X509对私钥的证书访问被拒绝,windows,ssl,cryptography,Windows,Ssl,Cryptography,我正在使用计算机个人存储中的PFXImportCertStore加密API从PKCS 12文件导入X509 问题: 在本地服务帐户或任何非管理员帐户下运行的任何进程都无法访问由Windows限制为管理员用户的私钥 如何向非管理员用户和本地服务授予对证书私钥的访问权限 注: 由于多进程使用证书,我更喜欢使用计算机存储而不是用户存储。这是一个有一些陷阱的棘手问题。我也有同样的问题,几近绝望,当我终于找到了拯救我的话 我成功地为在网络服务帐户下运行的本地服务执行了此操作 首先,可以选择授予其他用户访问

我正在使用计算机个人存储中的PFXImportCertStore加密API从PKCS 12文件导入X509

问题:

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

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

注:


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

这是一个有一些陷阱的棘手问题。我也有同样的问题,几近绝望,当我终于找到了拯救我的话

我成功地为在网络服务帐户下运行的本地服务执行了此操作

首先,可以选择授予其他用户访问MS证书存储中证书私钥的权限。我已经将此分类为druid知识:此选项在上下文菜单中可用,右键单击证书,但仅当证书位于localMachine\Personal存储中时才可用。在条目“所有任务”中,您将找到子条目“管理私钥”。这在其他存储中不可用,即使在CurrentUser\Personal存储中也不可用

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

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

这就是上面引用的帖子的来龙去脉,也是我面临的最后一个障碍:只有当您从MMC管理单元中将证书导入证书存储时,上述过程才有效。选择store localMachine\Personal并使用上下文菜单导入有问题的证书。我选择使私钥可导出,这可能与此相关,也可能与此无关。如果通过双击文件系统中的证书来导入证书,它将被导入到当前用户位置的某个存储中。我过去经常这样做,然后将其移动到localMachine\Personal文件夹中,并更改了访问权限-这对我来说根本不起作用。只有从MMC证书管理单元中的localMachine\Personal中导入后,它才能立即工作

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

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