Как создать файл .pfx из сертификата и закрытого ключа? - PullRequest
310 голосов
/ 10 июня 2011

Мне нужен файл .pfx для установки https на веб-сайте IIS.

У меня есть два отдельных файла: сертификат (.cer или pem) и закрытый ключ (.crt), но IIS принимает только файлы .pfx.

Я, очевидно, установил сертификат, и он доступен в диспетчере сертификатов (mmc), но при выборе мастера экспорта сертификатов я не могу выбрать формат PFX (он неактивен)

Существуют ли какие-либо инструменты для этого или примеры C #, делающие это программно?

Ответы [ 14 ]

449 голосов
/ 25 июня 2013

Вам нужно будет использовать openssl.

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

Файл ключа - это просто текстовый файл с вашим закрытым ключом.

Если у вас естькорневой CA и промежуточные сертификаты, затем включите их, используя несколько -in параметров

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

Вы можете установить openssl отсюда: openssl

36 голосов
/ 09 сентября 2013

Утилита командной строки Microsoft Pvk2Pfx, по-видимому, обладает необходимой вам функциональностью:

Pvk2Pfx (Pvk2Pfx.exe) - это инструмент командной строки, который копирует информацию открытого и закрытого ключей, содержащуюся в .spc, .cer,и .pvk файлы в файл обмена личной информацией (.pfx).
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

Примечание: если вам нужно / хотите / предпочитаете решение C #, то вы можете рассмотреть возможность использованияhttp://www.bouncycastle.org/ API.

30 голосов
/ 15 августа 2014

Если вы ищете Windows GUI, проверьте DigiCert.Я просто использовал это, и это было довольно просто.

На вкладке SSL я сначала импортировал сертификат.Затем, выбрав сертификат, я смог экспортировать его в виде PFX как с ключом, так и без него.

https://www.digicert.com/util

27 голосов
/ 08 марта 2014

Вам НЕ нужен openssl или makecert или что-либо из этого.Вам также не нужен личный ключ, предоставленный вам вашим CA.Я могу почти гарантировать, что проблема в том, что вы ожидаете, что сможете использовать файлы ключей и сертификатов, предоставленные вашим ЦС, но они не основаны на «пути IIS».Я так устал видеть плохую и сложную информацию здесь, что решил написать в блоге тему и решение.Когда вы поймете, что происходит, и увидите, как это просто, вам захочется обнять меня:)

SSL-сертификаты для IIS с PFX раз и навсегда - объяснение SSL и IIS - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Используйте интерфейс IIS «Сертификаты сервера» для «Генерации запроса на сертификат» (подробности этого запроса выходят за рамки данной статьи, но эти детали являются критическими).Это даст вам CSR, подготовленный для IIS.Затем вы передаете этот CSR в свой CA и запрашиваете сертификат.Затем вы берете файл CER / CRT, который они вам дают, возвращаетесь в IIS, «Полный запрос сертификата» в том же месте, где вы сгенерировали запрос.Он может попросить .CER, и у вас может быть .CRT.Это одно и то же.Просто измените расширение или используйте раскрывающийся список . , чтобы выбрать свой .CRT.Теперь укажите правильное «понятное имя» (* .yourdomain.com, yourdomain.com, foo.yourdomain.com и т. Д.). ЭТО ВАЖНО!Это ДОЛЖНО совпадать с тем, для чего вы настроили CSR, и с тем, что вам предоставил ваш CA.Если вы запросили подстановочный знак, ваш ЦС должен был одобрить и сгенерировать подстановочный знак, и вы должны использовать его.Если ваш CSR был сгенерирован для foo.yourdomain.com, вы ДОЛЖНЫ предоставить его на этом шаге.

7 голосов
/ 05 октября 2015

https://msdn.microsoft.com/en-us/library/ff699202.aspx

((соответствующие цитаты из статьи ниже))

Затем вам нужно создать файл .pfx, который вы будете использовать для подписи ваших развертываний. Откройте окно командной строки и введите следующую команду:

PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword

где:

  • pvk - yourprivatekeyfile.pvk - файл закрытого ключа, созданный на шаге 4.
  • spc - yourcertfile.cer - файл сертификата, созданный на шаге 4.
  • pfx - yourpfxfile.pfx - это имя файла .pfx, который будет создаваться.
  • po - yourpfxpassword - это пароль, который вы хотите назначить файлу .pfx. Вам будет предложено ввести этот пароль при первом добавлении файла .pfx в проект в Visual Studio.

(Необязательно (и не для OP, но для будущих читателей) вы можете создать файл .cer и .pvk с нуля) (вы должны сделать это ДО вышеописанного). Обратите внимание, что mm / dd / yyyy являются заполнителями для даты начала и окончания. см. статью msdn для полной документации.

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r
6 голосов
/ 09 сентября 2013

Я получил ссылку с вашим требованием. Объедините файлы CRT и KEY в PFX с OpenSSL

Выдержки из вышеуказанной ссылки:

Сначала нам нужно извлечь сертификат корневого CA из существующего файла .crt, потому что это понадобится нам позже.Итак, откройте .crt и перейдите на вкладку «Certification Path».

Нажмите самый верхний сертификат (в данном случае VeriSign) и нажмите «Просмотреть сертификат».Перейдите на вкладку «Сведения» и нажмите «Копировать в файл» ...

Выберите сертификат X.509 (.CER) в кодировке Base-64. Сохраните его как rootca.cer или что-то подобное.Поместите его в ту же папку, что и другие файлы.

Переименуйте его из rootca.cer в rootca.crt Теперь в нашей папке должно быть 3 файла, из которых мы можем создать файл PFX.

Здесь нам нужен OpenSSL.Мы можем либо скачать и установить его в Windows , либо просто открыть терминал в OSX.

РЕДАКТИРОВАТЬ:

  1. Имеется ссылка поддержки с пошаговой информацией о том, как установить сертификат.

  2. После успешной установки экспортируйте сертификат, выберите формат .pfx, включите закрытый ключ.

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

  3. Импортированный файл можно загрузить на сервер.

6 голосов
/ 10 июня 2011

Вам нужно использовать инструмент makecert.

Откройте командную строку с правами администратора и введите следующее:

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

Где <CertifcateName> = название вашего сертификата для создания.

Затем вы можете открыть оснастку «Диспетчер сертификатов» для консоли управления, введя certmgr.msc в меню «Пуск», нажмите «Личные»> «Сертификаты»>, и ваш сертификат должен быть доступен.

Вот статья.

https://azure.microsoft.com/documentation/articles/cloud-services-certs-create/

4 голосов
/ 08 января 2017

Я создал файл .pfx из файлов .key и .pem.

Как это openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

4 голосов
/ 09 марта 2015

Это на порядок проще всего конвертировать * .cer в * .pfx файлы:

Просто скачайте конвертер переносимого сертификата из DigiCert: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

Выполните его, выберитефайл и получите свой * .pfx !!

3 голосов
/ 26 февраля 2013

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

Вы можете добавить оснастку для сертификатов в MMC и выбрать учетную запись, для которой она должна управлять сертификатами. Выберите Локальный компьютер. Если вашего сертификата нет, импортируйте его, щелкнув правой кнопкой мыши магазин и выбрав Все задачи> Импорт.

Теперь перейдите к импортированному сертификату в соответствии с версией оснастки сертификата для локального компьютера. Щелкните правой кнопкой мыши сертификат и выберите «Все задачи»> «Экспорт». Вторая страница мастера экспорта должна спросить, хотите ли вы экспортировать закрытый ключ. Выберите Да. Теперь доступна только опция PFX (она недоступна, если вы выбрали нет, а опция экспорта закрытого ключа недоступна для учетной записи текущего пользователя).

Вам будет предложено установить пароль для файла PFX, а затем задать имя сертификата.

...