Как создать файл.pfx из сертификата и закрытого ключа?

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

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

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

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

24 ответа

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

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

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

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

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

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

Решение для Windows, не требующее установки OpenSSL

Недавно я пытался решить ту же проблему - и у меня был только ноутбук с Windows без установленного openssl (и недостаточно прав администратора для его установки). Оказывается, в Windows есть встроенная утилита под названиемcertutilкоторый может объединять файлы .crt и .key в .pfx. Документы здесь.

Вам нужно создать новую папку и поместить.crtи ключевые файлы в нем. Переименуйте оба файла, чтобы они имели одинаковое имя (но другое расширение):

      {{sitename}}.crt
{{siteName}}.key

Если ваш ключевой файл представляет собой обычный текстовый файл, просто измените расширение на.key.

После этого откройте cmd в этой папке и запуститеcertutil -mergepfx [INPUTFILE] [OUTPUTFILE]

Пример:

файл сертификата:mySite.crt

ключевой файл:mySite.key

команда certutil:certutil -mergepfx mySite.crt mySite.pfx

Примечание: вам будет предложено ввести пароль для вновь созданных.pfxфайл - не забудьте запомнить/сохранить его - он потребуется при импорте сертификата в целевую систему.

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

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

https://www.digicert.com/util

Утилита командной строки 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.

Вам не нужно 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 Если вы запросили подстановочный знак, ваш CA должен был одобрить и сгенерировать подстановочный знак, и вы должны использовать его. Если ваш CSR был сгенерирован для foo.yourdomain.com, вы ДОЛЖНЫ предоставить его на этом этапе.

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

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

По этой ссылке:

Если вам нужно, используйте эту простую последовательность команд с OpenSSL для создания filessl.key( Файл ключа сертификата SSL ) и filessl.crt( Файл сертификата SSL):

      openssl genrsa 2048 > filessl.key
chmod 400 filessl.key
openssl req -new -x509 -nodes -sha256 -days 365 -key filessl.key -out filessl.crt

Пока здесь вы должны ответить на интерактивную форму ( вы можете найти справочную информацию, например req.cnfиз этого другого сообщения: https://stackoverflow.com/a/49784278/7856894https://stackoverflow.com/a/49784278/7856894 )

Затем продолжите эту последнюю команду, которая попросит вас ввести пароль экспорта :

      openssl pkcs12 -export -out filessl.pfx -inkey filessl.key -in filessl.crt

Готов, это сгенерированный файл сертификата SSL в .PFX ( или P12 формате): filessl.pfx.

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 с нуля) (вы должны сделать это ДО вышеописанного). Обратите внимание, что мм / дд / гггг являются заполнителями для даты начала и окончания. см. статью MSDN для полной документации.

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r

Вам нужно использовать инструмент 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/

Это BY FAR самый простой способ конвертировать *.cer в *.pfx файлы:

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

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

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

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

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

Нажмите самый верхний сертификат (в данном случае VeriSign) и нажмите "Просмотреть сертификат". Выберите вкладку Details и нажмите Copy to File...

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

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

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

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

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

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

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

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

openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx

Я пробовал openssl на macbook с libreSSL v2.8.3 и получал ошибку «Нет сертификата, соответствующего закрытому ключу». У меня был один сертификат домена, 2 промежуточных и 1 корневой сертификат. Поэтому я использовал следующую команду, которая успешно сработала:

      openssl pkcs12 -export -clcerts -inkey private.csr.key -in domain.name.crt -certfile intermediate1.crt -certfile intermediate2.crt -certfile root.crt -out domain.name.p12 -name "Your Name"

Он запросит пароль, который будет использоваться во время импорта. Эта команда создаст файл .p12, который можно переименовать в .pfx, поскольку оба они одинаковы.

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

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

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

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

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

Я хотел бы продвигать «X-сертификат и менеджер ключей» или xca.exe, это похоже на версию OpenSSL с графическим интерфейсом пользователя. При этом вы можете сгенерировать файл pfx, выполнив следующие действия:

  1. Импортировать закрытый ключ во вкладке «Закрытые ключи»;
  2. Импортируйте сертификат во вкладке «Сертификаты»;
  3. Создайте файл pfx, выбрав сертификат, а затем «Экспорт», выберите PKCS #12 в качестве формата.

Вот и все.

Для файлов pfx из SSL бесплатно я считаю этот https://decoder.link/converter самым простым.

Просто убедитесь PEM -> PKCS#12 выбран, затем загрузите сертификат, ca_bundle и файлы ключей и выполните преобразование.

Запомните пароль, затем загрузите с паролем, который вы использовали, и добавьте привязки.

В большинстве случаев, если вы не можете экспортировать сертификат как PFX (включая закрытый ключ), это связано с тем, что MMC/IIS не может найти / не имеет доступа к закрытому ключу (используется для генерации CSR). Вот шаги, которые я выполнил, чтобы решить эту проблему:

  • Запустите MMC от имени администратора
    • Создайте CSR, используя MMC. Следуйте этим инструкциям, чтобы сделать сертификат экспортируемым.
  • Как только вы получите сертификат от CA (crt + p7b), импортируйте их (Личные \ Сертификаты и Промежуточный центр сертификации \ Сертификаты)
  • ВАЖНО! Щелкните правой кнопкой мыши новый сертификат (Личные \ Сертификаты) Все задачи... Управление закрытым ключом и назначьте разрешения для своей учетной записи или для всех (рискованно!). Вы можете вернуться к предыдущим разрешениям, как только вы закончите.
  • Теперь щелкните правой кнопкой мыши сертификат и выберите "Все задачи... Экспорт", и вы сможете экспортировать сертификат, включая закрытый ключ, в виде файла PFX, и вы можете загрузить его в Azure!

Надеюсь это поможет!

Хотя, вероятно, проще всего создать новый CSR с использованием IIS (как сказал @rainabba), при условии, что у вас есть промежуточные сертификаты, есть некоторые онлайн-конвертеры, например: https://www.sslshopper.com/ssl-converter.html

Это позволит вам создать PFX из вашего сертификата и закрытого ключа без необходимости установки другой программы.

Я написал небольшое консольное приложение, которое преобразуетPEMфайл сертификата и файл закрытого ключа в один .pfxPKCS12файл сертификата. Он использует библиотеку BouncyCastle.

Мой репозиторий на Github: https://github.com/nklkli/PEM-to-PKCS12

Не стесняйтесь изменять код для создания защищенного паролем файла *.pfx.

Там есть Export-PfxCertificate Командлет, доступный для Powershell, который, кажется, делает эту работу.

Это был самый простой инструмент от Certum, который я нашел в сети. Без загрузки, без установки, без командной строки и т. Д. Просто скопируйте / вставьте CRT и закрытый ключ и загрузите PFX:

https://cservices.certum.pl/muc-customer/pfx/generator

Мне удалось установить свой ssl на веб-службу Azure, для которой также требуется файл PFX, выполнив следующие действия:

  1. Перейдите на https://www.sslshopper.com/ssl-converter.html.
  2. Тип действующего сертификата: Стандартный PEM
  3. Загрузите файл .crt / закрытый ключ / пакет crt в файл сертификата цепочки
  4. Тип для преобразования: PFX / PKCS#12
  5. Введите ваш пароль
  6. Перерабатывать

Вы получите файл pfx, который можно использовать на веб-сервере IIS или в Azure.

Я знаю, что несколько пользователей говорили об установке того и другого, а также о добавлении программ из командной строки и загрузке...

Лично я ленив и нахожу все эти методы громоздкими и медленными, плюс я не хочу ничего скачивать и находить правильные строки cmd, если мне не нужно.

Лучший способ для меня на моем личном сервере IIS - использовать RapidSSLOnline. Это инструмент, который на сервере позволяет вам загружать свой сертификат и закрытый ключ и может генерировать для вас файл pfx, который вы можете напрямую импортировать в IIS.

Ссылка здесь: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

Ниже приведены шаги, используемые для запрашиваемого сценария.

  1. Выберите текущий тип = PEM
  2. Изменить на = PFX
  3. Загрузите свой сертификат
  4. Загрузите свой закрытый ключ
  5. Если у вас есть сертификат ROOT CA или промежуточные сертификаты, загрузите их тоже
  6. Установите пароль на ваш выбор, используемый в IIS
  7. Нажмите на кнопку reCaptcha, чтобы доказать, что вы не бот
  8. Нажмите Конвертировать

И это все, что вам нужно загрузить PFX и использовать это в процессе импорта в IIS.

Надеюсь, что это помогает другим единомышленникам, ленивым техническим людям.

Другие вопросы по тегам