Назад | Перейти на главную страницу

Windows CA и файлы .pfx

Как правильно получить сертификат, сертификат CA и закрытый ключ (также известный как файл .pfx) из центра сертификации Windows через командную строку?

Я делаю это так: я создаю файл запроса с помощью блокнота со всеми соответствующими настройками (exportable = true, расширенные расширения использования ключей, тема), а затем использую certreq (-new flag) для преобразования этого .inf в файл. req и с помощью certreq отправить его в ЦС, получив обратно сертификат. Затем я добавлю этот сертификат certreq (флаг -accept), а затем экспортирую его с помощью флагов certutil -privatekey -exportpfx.

Я правильно это делаю?

Я думаю, что вы, вероятно, уже делаете это как можно меньше шагов. У вас не может быть PFX до тех пор, пока у вас не будет закрытого ключа и подписанного CSR, и у вас не может быть подписанного сертификата до тех пор, пока CA не утвердит ваш запрос. (Что может потребовать или не потребовать утверждения администратором вручную, в зависимости от настроек шаблона сертификата.)

Однако certreq сохраняет ваши закрытые ключи в хранилище сертификатов, поскольку он генерирует CSR, поэтому вам обычно приходится выполнять запрос сертификата на том же компьютере, с которого вы сгенерировали запрос. Я не могу не чувствовать, что это, по крайней мере, частично, попытки некоторых программистов Microsoft «защитить нас от самих себя», потому что мы не знали, как сохранить наши драгоценные закрытые ключи в секрете. И я не могу их винить. Мы, вероятно, увидели бы, что закрытые ключи остаются висящими в профиле рабочего стола каждого веб-разработчика на каждом веб-сервере, если certreq не хранит закрытые ключи от них.

В любом случае, я отвлекся, но если вы хотите большей гибкости в отношении вашего закрытого ключа, чем дает вам certreq, используйте инструмент командной строки OpenSSL для создания ваших закрытых ключей. (openssl genrsa -out private.key 2048 После этого вы можете делать с ними все, что захотите, без необходимости экспортировать их из хранилища сертификатов.