2011-02-09 52 views
5

Tôi có chứng chỉ trong dịch vụ MSMQ Cửa hàng cá nhân và tôi cần cấp cho Dịch vụ mạng quyền truy cập chứng chỉ.Cách cấp quyền tài khoản để truy cập chứng chỉ?

Cách duy nhất mà tôi biết để làm điều đó là sử dụng Certutil.exe trên win2008/7 như sau:

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

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

Tuy nhiên, certutil trên Win2003/XP không nhận ra tham số -service, vì vậy không tốt.

Câu hỏi của tôi là làm cách nào tôi có thể thực hiện theo cách hoạt động cho cả Win2003/XP và Win2008/7?

Tôi cần một phương pháp tiếp cận không tương tác (tiện ích dòng lệnh, tập lệnh, COM/.NET/Win32 API).

Trả lời

4

Nếu bạn chỉ cần đặt quyền ACL trên khóa riêng của chứng chỉ (mà trang được liên kết của bạn đề xuất), tôi vừa mới đăng câu trả lời here về cách tôi tìm thấy cách thực hiện điều đó.

Mở X509Store và nhận chứng chỉ hiện tại trong tay, sau đó đặt ACL trên khóa riêng.

Bạn có thể sử dụng một cái gì đó như thế này để có được SID của tài khoản cần truy cập (hoặc chỉ cần sử dụng nổi tiếng SID S-1-5-20 nếu bạn biết nó luôn luôn Mạng Service):

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

answer khác của tôi có mã đặt ACL. (Caveat: Tôi đã chạy nó trên Windows Server 2003 nhưng không chạy trên Windows Server 2003 nhưng không phải XP.)

+0

Bạn đã bao giờ cố gắng để mở một X509Store liên kết với một dịch vụ cửa sổ? Vui lòng cung cấp đoạn mã. Cảm ơn. – mark

+0

Tôi không tìm thấy cách dễ dàng để làm điều đó. Liên kết này: http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/3b8f0606-fe05-4607-bc7c-183fc7b719dd/ có một vài ý tưởng trong đó. Một là sử dụng các lớp WSE 2.0 (xem liên kết để xem đoạn mã đã đăng). Tôi không thử vì tôi không muốn cài đặt WSE 2.0, nhưng đây là liên kết tải xuống mà tôi tìm thấy cho WSE 2.0: http : //www.microsoft.com/downloads/en/details.aspx? FamilyID = 1ba1f631-c3e7-420a-bc1e-ef18bab66122 –

+0

Tôi đã đánh dấu nó là câu trả lời, vì bài đăng bạn đã giới thiệu chứa câu trả lời - sử dụng X509Store (IntPtr), nơi xử lý đến kho chứng chỉ dịch vụ được mở bằng P/Invoke. – mark

1

Chúng tôi gặp sự cố tương tự với ứng dụng được lên lịch đăng lên trang web được bảo mật.

Cửa hàng chứng chỉ không thể truy cập được bởi ứng dụng khách. Liên kết được đăng bên dưới đề cập đến việc quản lý chứng chỉ từ cửa sổ 2008 r2 mmc chụp và cấp quyền truy cập vào tài khoản người dùng được đề cập. Chúng tôi đã có thể chạy tiến trình theo lịch trình theo cách này và cấp quyền truy cập vào tài khoản đang chạy ứng dụng khách.

Giải pháp khác, thông qua trình lên lịch, là cấp cấp truy cập cao nhất cho chương trình (RỦI RO AN NINH) và cho phép nó chạy như quản trị viên.

Dưới đây là liên kết tham chiếu ở trên http://msmvps.com/blogs/luisabreu/archive/2010/09/13/grant-access-to-certificate-s-private-key-in-iis-7-5.aspx

Các vấn đề liên quan