2011-02-09 22 views
5

Mam certyfikat w serwisie MSMQ Magazyn osobisty i muszę przyznać usłudze sieciowej uprawnienia dostępu do certyfikatu.Jak przyznać uprawnienia konta, aby uzyskać dostęp do certyfikatu?

Jedynym sposobem, że wiem, aby zrobić to za pomocą certutil.exe na Win2008/7 tak:

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

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

Jednak Certutil na Win2003/XP nie rozpoznaje parametru -service, więc nie jest to dobre.

Moje pytanie brzmi: jak mogę to zrobić w sposób, który działa zarówno dla Win2003/XP i Win2008/7?

Potrzebuję podejścia nieinteraktywnego (narzędzie wiersza poleceń, skrypt, COM/.NET/Win32 API).

Odpowiedz

4

Jeśli po prostu potrzebujesz ustawić prawa ACL na kluczu prywatnym certyfikatu (który sugeruje twoja dołączona strona), właśnie wysłałem odpowiedź here o tym, jak to zrobiłem.

Otwórz X509Store i zdobądź bieżący certyfikat, a następnie ustaw ACL na kluczu prywatnym.

Można użyć coś takiego uzyskać SID konta, która chciałaby dostępu (lub po prostu użyć znanego SID S-5.1.20, jeśli wiesz, że to zawsze usługa sieciowa):

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

Mój inny answer ma kod, który ustawia ACL. (Zastrzeżenie: uruchomiłem to na Windows Server 2003, ale nie XP).

+0

Czy kiedykolwiek próbował otworzyć X509Store związanej z usługą windows? Podaj fragment kodu. Dzięki. – mark

+0

Nie znalazłem łatwego sposobu na zrobienie tego. Ten link: http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/3b8f0606-fe05-4607-bc7c-183fc7b719dd/ zawiera kilka pomysłów. Jedną z nich jest wykorzystanie klas WSE 2.0 (spójrz na link, aby zobaczyć opublikowany fragment kodu). Nie próbowałem, ponieważ nie chciałem zainstalować WSE 2.0, ale tutaj jest link do pobrania, który znalazłem dla WSE 2.0: http : //www.microsoft.com/downloads/en/details.aspx? FamilyID = 1ba1f631-c3e7-420a-bc1e-ef18bab66122 –

+0

Mam oznaczył to jako odpowiedź, ponieważ wysłana przez ciebie wiadomość zawiera odpowiedź - używając X509Store (IntPtr) konstruktor, w którym uchwyt do magazynu certyfikatów usług jest otwarty przy użyciu P/Invoke. – mark

1

Mieliśmy podobny problem z zaplanowaną aplikacją, która publikuje na bezpiecznej stronie.

Magazyn certyfikatów nie był dostępny dla klienta. Zamieszczony poniżej odnośnik zarządza certyfikatami z Windows 2008 r2 mmc i zapewnia dostęp do konta użytkownika, o którym mowa. W ten sposób mogliśmy uruchomić proces harmonogramu i przyznać dostęp do konta, na którym działa klient.

Drugim rozwiązaniem, za pośrednictwem programu planującego, było przyznanie najwyższego poziomu dostępu do programu (RYZYKA BEZPIECZEŃSTWA) i zezwolenie na jego działanie jak administrator.

Oto link mowa powyżej http://msmvps.com/blogs/luisabreu/archive/2010/09/13/grant-access-to-certificate-s-private-key-in-iis-7-5.aspx

Powiązane problemy