2011-02-09 143 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

相關問題