2011-02-09 146 views
5

我有一个MSMQ服务个人存储中的证书,我需要授予网络服务访问证书的权限。如何授予帐户访问证书的权限?

,我知道的唯一的办法是使用的certutil.exe在WIN2008/7,像这样的事:

certutil -service -service -repairstore MSMQ\My "" D:PAI(A;;GA;;;BA)(A;;GA;;;SY)(A;;GR;;;NS) 

(感谢http://blogs.msdn.com/b/gautamm/archive/2010/10/26/https-messaging-with-client-side-certificate-fails-with-iis-error-403.aspx

然而,在的certutil WIN2003/XP无法识别-service参数,所以不好。

我的问题是我怎样才能以Win2003/XP和Win2008/7的方式工作?我需要一个非交互式的方法(命令行工具,脚本,COM/.NET/Win32 API)。

回答

4

如果您只需要在证书的私钥(您的链接页面建议)上设置ACL权限,我最近发布了一个答案here我如何找到这样做。

打开X509Store并获取当前证书,然后在私钥上设置ACL。

您可以使用这样的事情来获得该帐户需要访问的SID(或只使用众所周知的SID S-1-5-20,如果你知道它总是网络服务):

NTAccount nt = new NTAccount("NT_AUTHORITY", "NetworkService"); 
SecurityIdentifier sid = (SecurityIdentifier)nt.Translate(typeof(SecurityIdentifier)); 

我的其他answer具有设置ACL的代码。 (注意:我已经在Windows Server 2003上运行了它,但不是XP上运行的。)

+0

引用你曾经试图打开与Windows服务相关联的的X509Store?请提供代码片段。谢谢。 – mark 2011-02-15 09:09:26

1

我们遇到了一个类似的问题,该问题会发布到安全站点。

客户端无法访问证书存储区。下面提到的链接提到了管理来自Windows 2008 r2 mmc的证书的权限,并允许访问有问题的用户帐户。我们能够以这种方式运行计划流程,并授予对运行客户端帐户的访问权限。

另一种解决方案是通过调度程序授予程序最高级别的访问权限(安全风险),并允许它像管理员一样运行。

这里是以上链接 http://msmvps.com/blogs/luisabreu/archive/2010/09/13/grant-access-to-certificate-s-private-key-in-iis-7-5.aspx

相关问题