У меня есть сертификат, который необходимо импортировать в Сертификаты/доверенные корневые центры сертификациии соответствующий закрытый ключ
Для фактического доступа к ключу из кода, который вам нужен 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
. Я могу получить к нему доступ там. Но я не могу получить к нему доступ в корне.Он просто говорит:
Набор ключей не существует
Есть предложения?
Если я установлю для своего пула приложений идентификатор Локальная система(которая имеет полные права доступа к моей машине), я смогу успешнополучить доступ к закрытому ключу. Итак, главный вопрос заключается в том, как установить разрешения для моего идентификатора пула приложений, чтобы иметь доступ к закрытым ключам для сертификатов в хранилище доверенных корней.
Почему доверенное корневое хранилище, а не личное?
У меня есть готовая сборка, которая обращается к этому сертификату в этом конкретном хранилище, поэтому простое размещение сертификата в личном хранилище не поможет мне. Вот почему установка доверительных разрешений на закрытые ключи доверенных корневых сертификатов является обязательной.