[英]How to grant an account permissions to access a certificate?
我在MSMQ服务个人存储中有证书,我需要授予网络服务访问证书的权限。
我知道这样做的唯一方法是使用win2008 / 7上的certutil.exe,如下所示:
certutil -service -service -repairstore MSMQ\My "" D:PAI(A;;GA;;;BA)(A;;GA;;;SY)(A;;GR;;;NS)
但是,win2003 / XP上的certutil无法识别-service参数,所以没有好处。
我的问题是如何以适合Win2003 / XP和Win2008 / 7的方式实现?
我需要一种非交互式方法(命令行实用程序,脚本,COM / .NET / Win32 API)。
如果您只需要在证书的私钥(您的链接页面建议)上设置ACL权限,我最近在这里发布了一个关于我如何找到这个的答案。
打开X509Store并获取当前的证书,然后在私钥上设置ACL。
你可以使用这样的东西来获得需要访问的帐户的SID(或者如果你知道它总是网络服务,那就使用众所周知的SID S-1-5-20):
NTAccount nt = new NTAccount("NT_AUTHORITY", "NetworkService");
SecurityIdentifier sid = (SecurityIdentifier)nt.Translate(typeof(SecurityIdentifier));
我的另一个答案是设置ACL的代码。 (警告:我在Windows Server 2003上运行它而不是XP。)
对于发布到安全网站的预定应用,我们遇到了类似的问题。
客户端无法访问证书存储区。 下面发布的链接提到管理来自Windows 2008 r2 mmc的证书,并授予对相关用户帐户的访问权限。 我们能够以这种方式运行计划流程并授予对运行客户端的帐户的访问权限。
通过调度程序,另一个解决方案是授予程序最高级别的访问权限(安全风险)并允许它像管理员一样运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.