2017-02-21 49 views
0

Я использую Bouncy Castle (C#) для создания самоподписанных сертификатов X.509 для веб-сервиса WCF.Возможно ли установить сертификат X509 в конкретный пункт StoreLocation (а не текущий пользователь)?

У меня есть прецедент, когда сертификаты создаются установщиком, запущенным в учетной записи пользователя (например, Учетная запись системного администратора). Установщик также создаст учетную запись пользователя Windows для этой службы (например, Моя учетная запись службы), которая затем будет использовать эти сертификаты.

Я бы не хотел, чтобы сертификат был доступен всем пользователям на машине/домене, но только на авторизованную учетную запись службы (Моя учетная запись службы).

В таком случае, кажется, ни StoreLocation.CurrentUser ни StoreLocation.LocalMachine сможет достичь этого?

Что было бы разумным способом решить этот прецедент?

ответ

1

Единственный способ получить доступ к сертификату из любой учетной записи - создать их в магазине LocalMachine; а не если вы поместите их в определенное хранилище пользователей. Обратите внимание, что сертификаты не имеют списков ACL. Частные ключи, однако, делают.

Таким образом, наиболее распространенный способ сделать это - сохранить сам сертификат в магазине LocalMachine, а затем защитить секретные ключи с помощью прав доступа ACL, предоставляя разрешения только тем учетным записям, которые фактически должны иметь доступ к закрытому ключу (который, безусловно, может быть учетной записью виртуальной службы, такой как NT Service\<ServiceName>).

В современных версиях Windows вы можете настроить права доступа к закрытому ключу непосредственно из оснастки MMC управления сертификатами, используя опцию All Tasks -> Manage Private Keys в контекстном меню для сертификата ,

+0

Спасибо. Решение было бы программным, но вы указали мне в правильном направлении. Для будущих читателей [здесь] (http://stackoverflow.com/questions/425688/how-to-set-read-permission-on-the-private-key-file-of-x-509-certificate-from- ne) является одной из таких реализаций. – Willeman