Я пытаюсь автоматизировать создание тестовых сред, а одним из шагов является создание самоподписанных сертификатов, которые будут использоваться для привязок SSL в IIS. Это приложение WPF, предназначенное для запуска всех веб-сайтов, приложений, служб Windows и т. Д., Основанных на указанных настройках конфигурации.Правильная автоматизация создания самозаверяющих сертификатов для разработки
Я попытался с помощью CertEnrollLib (certenroll.dll), но по какой-то неизвестной причине, я получаю следующее сообщение об ошибке при запуске кода на сервере:
Когда я бегу на моя машина работает нормально. Мой первый вопрос: кто-нибудь знает, почему это происходит? Я наткнулся на эту ссылку:
Problems when compiling and running code that uses CertEnroll with .NET 4.0 and x64
Я попытался указанное решение:
Чтобы избавиться от этих ошибок компиляции мы изменились «Вставить Interop Типы» в «ложных "в Свойства ссылок CERTCLIENTLib и CERTENROLLLib.
Безрезультатно. Также попытался изменить платформу, как сказано в ссылке:
Я до сих пор не было время, чтобы выяснить, почему это происходит, но если вы собираете против x86 платформы вместо любой платформы CPU (что делает код для запуска по сравнению с платформой x64 на x64-системах по умолчанию), он будет работать нормально.
Но это тоже не работает, я получаю ту же ошибку. Я также пытался использовать BouncyCastle раньше, но получил еще одну ошибку COM.
EDIT: Я получил его фиксированной благодаря @CryptoGuy. Вместо того чтобы использовать конструктор класса ссылочного библиотеки:
var cert = new CX509CertificateRequestCertificate(); // old, not working
// gets the right class to use with my machine, but not with the server
Я заменил его с этим:
IX509CertificateRequestCertificate cert = (IX509CertificateRequestCertificate) Activator.CreateInstance(Type.GetTypeFromProgID("X509Enrollment.CX509CertificateRequestCertificate"));
// gets whatever is the CX509CertificateRequestCertificate implementation is
какая ОС работает на вашем сервере? – Crypt32
@CryptoGuy Server: 'Windows Server 2008® Service Pack 2, а именно Windows Server Web® на панели управления -> система. Моя машина: 'Windows 7® Service Pack 1'. –