Импорт сертификата .cer из cmd - PullRequest
2 голосов
/ 29 марта 2019

При импорте сертификата .cer с помощью утилиты certutil не удается сопоставить его с закрытым ключом, хотя запрос на подпись сертификата был создан на той же машине.

Я использую certreqчтобы создать файл .csr, используемый для получения этого сертификата, а в .inf у меня есть флаг Exportable = True.Выполнение импорта вручную через мастер mmc работает, но не при выполнении следующей команды из консоли администратора.

certutil -addstore -f "My" "website_aps_production.cer"

Более того, после импорта сертификата с помощью certutil, глядя в mmc, я заметилПонятное имя сбрасывается (отображается как Нет).

Я уже попробовал механизм хранилища после импорта сертификата из cmd, но не помог.

certutil -repairstore my >cert_thumbprint<

ОБНОВЛЕНИЕ

Я попытался импортировать сертификат, используя certreq -accept -machine website_aps_production.cer, но выдает ошибку: Невозможно создать цепочку сертификатов для доверенного корневого центра.0x800b010a и в консоли есть дополнительное предупреждение Сертификат, выданный центром сертификации, установить нельзя.Обратитесь к администратору.

1 Ответ

2 голосов
/ 19 апреля 2019

В качестве обходного пути мне удалось автоматизировать процесс импорта сертификатов с помощью PowerShell.

Set-Location -Path cert:\LocalMachine\My

Import-Certificate -Filepath "C:\website_aps_production.cer"

Таким образом, сертификат импортируется в хранилище локального компьютера и сопоставляется с его соответствующим закрытым ключом, который можно в дальнейшем экспортировать.

Однако более удобным решением является создание всего с использованием openSSL и вообще без использования хранилища сертификатов. Таким образом, приватный ключ экспортируется независимо от сертификата.

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"
...