Я пытаюсь использовать сертификаты и закрытые ключи во встроенных системах, которые были созданы из служб сертификатов Microsoft Active Directory. NDES и SCEP в настоящее время не входят в сферу охвата, поэтому он должен быть полуавтоматическим.
Я использую веб-инструмент Microsoft на нашем сервере AD CA по адресу https: // server / certsrv . Я могу пройти и сгенерировать ответ без CSR и экспортировать закрытый ключ с сертификатом. Ответ - это страница, которая просит меня «Установить этот сертификат» или «Сохранить ответ».
Если я запустил опцию «Установить этот сертификат», приложение Windows Certmgr покажет, что я импортировал сертификат и у меня есть закрытый ключ. Затем его можно экспортировать как файл PKCS # 12, который можно использовать или преобразовать в PEM. Однако, если я использую «Сохранить ответ» вариант и сохраните файл как p7b (как указано certutil при изучении файла ответов), а затем я использую файл p7b для импорта сертификатов, закрытый ключ недоступен. Это согласовано, поскольку я не ожидал, что файл PKCS # 7 будет хранить закрытые ключи.
Мой вопрос:
Формат файла PKCS # 7 не поддерживает закрытые ключи, а OpenSSL не поддерживает извлечение закрытых ключей из файла PKCS # 7. Есть ли способ использовать веб-инструмент certsrv и получить как сертификат, так и закрытый ключ, не устанавливая этот сертификат в Windows? Кроме того, WTF позволяет MS устанавливать закрытые ключи, которые я не могу получить? Я просмотрел сценарии в файле https: //dakota.main.lab/certsrv/certfnsh. asp , и они, похоже, используют те же данные pkcs # 7, которые представлены в выходных данных «сохранить ответ».
Заранее спасибо.
Динсдейл
Когда вы генерируете запрос на сертификат с помощью веб-регистрации, закрытый ключ генерируется локально с помощью вашего браузера. Запрос на подпись сертификата отправляется в ЦС (без закрытого ключа), после чего он подписывается. Сертификат затем представлен вам на веб-странице со ссылкой на «Установить этот сертификат».
В этот момент вы не сможете сохранить его как PKCS # 12 (игнорируя тот факт, что вы не можете щелкнуть правой кнопкой мыши и выберите «Сохранить как»), поскольку это просто сертификат на сервере.
Когда вы «Установить этот сертификат», он сохраняется в вашем хранилище сертификатов, после чего связывается с закрытым ключом. Если бы вы открыли MMC сертификатов, вы бы увидели там этот сертификат, и он показал бы, что у вас также есть закрытый ключ. Только на этом этапе вы можете экспортировать оба файла как файл PKCS # 12.
В качестве альтернативы вы можете использовать MMC Certificates для запроса сертификата, а затем экспортировать его с его закрытым ключом как PKCS # 12, но даже это таким образом, чтобы сертификат был сначала установлен на вашем компьютере (чтобы связать его с его закрытым ключом), прежде чем вы сможете его экспортировать.
Вы можете выполнить аналогичную процедуру в командной строке, но, опять же, вам необходимо установить сертификат, прежде чем вы сможете экспортировать его как PKCS # 12.
Итак, я полагаю, что ответ на ваш вопрос будет следующим: 'Нет, ты не можешь. Закрытый ключ всегда является локальным и должен быть связан с сертификатом, возвращаемым из ЦС, прежде чем вы сможете экспортировать его как PKCS # 12. '