mar*_*ark 6 windows security certificate
我在MSMQ服务个人存储中有证书,我需要授予网络服务访问证书的权限.
我知道这样做的唯一方法是使用win2008/7上的certutil.exe,如下所示:
certutil -service -service -repairstore MSMQ\My "" D:PAI(A;;GA;;;BA)(A;;GA;;;SY)(A;;GR;;;NS)
Run Code Online (Sandbox Code Playgroud)
但是,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));
Run Code Online (Sandbox Code Playgroud)
我的另一个答案有设置 ACL 的代码。(警告:我在 Windows Server 2003 上运行过它,但没有在 XP 上运行过。)