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

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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

У командной строки Microsoft Pvk2Pfx есть необходимые функции:

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

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

Ответ 3

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

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

https://www.digicert.com/util

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

У меня есть ссылка на ваше требование. Объединить файлы CRT и KEY в PFX с OpenSSL

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

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

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

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

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

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

EDIT:

Ответ 8

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

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

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

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

Ответ 9

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 is the private key file that you created in step 4.
-spc yourcertfile.cer is the certificate file you created in step 4.
-pfx yourpfxfile.pfx is the name of the .pfx file that will be created.
-po yourpfxpassword is the password that you want to assign to the .pfx file. You will be prompted for this password when you add the .pfx file to a project in Visual Studio for the first time. 

(Необязательно (а не для 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

Ответ 10

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

Подобно этому openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

Ответ 11

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

Ответ 12

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

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

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

Ссылка находится здесь: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

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

  • Выберите текущий тип = PEM
  • Изменить для = PFX
  • Загрузить сертификат
  • Загрузите свой закрытый ключ
  • Если у вас есть сертификат ROOT CA или промежуточные сертификаты, загрузите их тоже.
  • Задайте пароль по вашему выбору, используемый в IIS
  • Нажмите reCaptcha, чтобы доказать, что вы не бот
  • Нажмите "Преобразовать"

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

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

Ответ 13

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

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

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

Ответ 14

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

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