Куда импортируется сертификат IIS? - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь повторить, что делает IIS Import. У меня есть приложение, которое должно импортировать сертификаты программно, но оно не работает, потому что мне кажется, что мне не хватает шага. Если я импортирую тот же сертификат с помощью утилиты IIS Import, он отлично работает.

В коде:

private X509Certificate2Collection x509 = new X509Certificate2Collection();
private X509Store IIS = new X509Store(StoreName.My, StoreLocation.LocalMachine);

x509.Import(path, password, X509KeyStorageFlags.Exportable);
var certificate = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);
IIS.Open(OpenFlags.ReadWrite);
IIS.Add(certificate);
IIS.Close();

netsh http add sslcert ipport=0.0.0.0:" + port.ToString() + " certhash=" + CertificateThumbprint + " appid={2d967d25-4edf-4962-9b6c-5b3c4d4de48d}";

netsh, связывающий FAILS с ошибкой a specified logon session does not exist. it may already have been terminated

ЕСЛИ я сначала импортирую сертификат через диспетчер IIS, ТО запускаю команду netsh, все это прекрасно работает, поэтому я должен что-то упустить в своем коде, который IIS делает в фоновом режиме ..

1 Ответ

1 голос
/ 27 февраля 2020

Поскольку вы не установили X509KeyStorageFlags.PersistKeySet как требуется, сертификат фактически не импортируется в магазин, как вы хотели.

Дополнительное объяснение можно найти в KB950090 * 1006. *

...