Доверительные разрешения PrivateKey для локальных сертификатов «Доверенные корни»

У меня есть сертификат, который необходимо импортировать в Сертификаты/доверенные корневые центры сертификациии соответствующий закрытый ключ

Для фактического доступа к ключу из кода, который вам нужен d, чтобы установить разрешения закрытого ключа для предоставления полного доступа к определенному пулу приложений IIS. Я полностью это понимаю, но проблема в том, что это можно установить только для личных сертификатов, а не для доверенных корневых.

Я попытался добавить тот же сертификат в личное хранилище, и следующий код не сломался:

X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);

foreach (X509Certificate2 cert in store.Certificates)
{
    if (cert.HasPrivateKey)
    {
        // access private key here
    }
}

store.Close();

Установка разрешений для сертификата в личном хранилище работает, если я изменю StoreName.Rootна StoreName.My. Я могу получить к нему доступ там. Но я не могу получить к нему доступ в корне.Он просто говорит:

Набор ключей не существует

Есть предложения?

Дополнительная информация

Если я установлю для своего пула приложений идентификатор Локальная система(которая имеет полные права доступа к моей машине), я смогу успешнополучить доступ к закрытому ключу. Итак, главный вопрос заключается в том, как установить разрешения для моего идентификатора пула приложений, чтобы иметь доступ к закрытым ключам для сертификатов в хранилище доверенных корней.

Почему доверенное корневое хранилище, а не личное?
У меня есть готовая сборка, которая обращается к этому сертификату в этом конкретном хранилище, поэтому простое размещение сертификата в личном хранилище не поможет мне. Вот почему установка доверительных разрешений на закрытые ключи доверенных корневых сертификатов является обязательной.

7
задан Robert Koritnik 14 May 2012 в 15:21
поделиться