#certificate #certutil #certreq
#сертификат #certutil #certreq
Вопрос:
При импорте .cer
сертификата с помощью certutil
утилиты не удается сопоставить его с его закрытым ключом, хотя запрос на подпись сертификата был создан на том же компьютере.
Я использую certreq
для генерации .csr
файла, используемого для получения этого сертификата, и в .inf
у меня есть Exportable = True
флаг. Выполнение импорта вручную с помощью мастера mmc работает, но не при выполнении следующей команды из консоли администратора.
certutil -addstore -f "My" "website_aps_production.cer"
Более того, после импорта сертификата с помощью certutil, заглянув в mmc, я заметил, что понятное имя сбрасывается (отображается как None).
Я уже пробовал механизм repairstore после импорта сертификата из cmd, но это не помогло.
certutil -repairstore my >cert_thumbprint<
Обновить
Я попытался импортировать сертификат с помощью certreq -accept -machine website_aps_production.cer
, но это выдает ошибку: не удалось создать цепочку сертификатов для доверенного корневого центра. 0x800b010a и в консоли появляется дополнительное предупреждение Сертификат, выданный центром сертификации, не может быть установлен. Обратитесь к своему администратору.
Ответ №1:
В качестве обходного пути мне удалось автоматизировать процесс импорта сертификата с помощью PowerShell.
Set-Location -Path cert:LocalMachineMy
Import-Certificate -Filepath "C:website_aps_production.cer"
Таким образом, сертификат импортируется в хранилище локального компьютера и сопоставляется с соответствующим закрытым ключом, который может быть дополнительно экспортирован.
Однако более удобным решением является создание всего с использованием OpenSSL и вообще отказ от использования хранилища сертификатов. Таким образом, privatekey экспортируется независимо от сертификата.
openssl req -nodes -newkey rsa:2048 -keyout pvkey.key -out csr.csr -subj "/C=test/ST=test/L=test/O=test/OU=test/CN=test" -config "C:openssl.cnf"