Как получить файл .pem из .key и .crt файлов?

Как создать файл PEM из сертификата SSL?

Это файлы, которые у меня есть:

  • .crt
  • server.csr
  • server.key

Ответ 1

Ваши ключи могут уже находиться в формате PEM, но только с именем .crt или .key.

Если содержимое файла начинается с -----BEGIN, и вы можете прочитать его в текстовом редакторе:

В файле используется base64, который читается в ASCII, а не в двоичном формате. Сертификат уже находится в формате PEM. Просто измените расширение на .pem.

Если файл находится в двоичном формате:

Для сервера .crt вы должны использовать

openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem

Для server.key используйте openssl rsa вместо openssl x509.

Вероятно, server.key - ваш закрытый ключ, а файл .crt - это сертификат, подписанный, x509.

Если это для веб-сервера, и вы не можете указать загрузку отдельного закрытого и открытого ключа:

Возможно, вам понадобится объединить два файла. Для этого используйте:

cat server.crt server.key > server.includesprivatekey.pem

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

Ответ 2

Мне нужно было сделать это для ELB AWS. После неоднократного избиения диалогового окна, наконец, это то, что сработало для меня:

openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem

Спасибо NCZ

Изменить: Как пишет @floatingrock

С AWS не забудьте добавить имя файла с помощью file://. Итак, это будет выглядеть так:

 aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/

http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html

Ответ 3

A pem файл содержит сертификат и закрытый ключ. Это зависит от формата вашего сертификата/ключа, но, вероятно, это так просто:

cat server.crt server.key > server.pem

Ответ 4

Кроме того, если вы не хотите, чтобы он запрашивал парольную фразу, необходимо выполнить следующую команду:

openssl rsa -in server.key -out server.key

Ответ 5

это лучший вариант для создания файла .pem

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts

Ответ 6

Я наблюдал: если вы используете openssl для создания сертификатов, он фиксирует как текстовую часть, так и часть сертификата base64 в файле crt. Строгий формат pem говорит (определение wiki), что файл должен начинаться и заканчиваться BEGIN и END.

.pem - (конфиденциальная расширенная почта). Сертификат DER, закодированный в Base64, заключен между "----- BEGIN CERTIFICATE -----" и "----- END СЕРТИФИКАТ -----"

Итак, для некоторых библиотек (я столкнулся с этим в java), которые ожидают строгий формат pem, сгенерированный crt завершит проверку недействительным как "недопустимый формат pem".

Даже если вы скопируете или скопируете строки с BEGIN/END CERTIFICATE и вставьте его в файл cert.pem, он должен работать.

Вот что я делаю, не очень чистый, но работает для меня, в основном он фильтрует текст, начинающийся с строки BEGIN:

grep -A 1000 BEGIN cert.crt > cert.pem

Ответ 7

  • Загрузить сертификат из временного портала appleId,
  • Экспорт сертификата из цепочки ключей и имя (Certificates.p12),
  • Откройте терминал и папку goto, где вы сохраните файл Certificates.p12,
  • Выполните следующие команды:

    a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes,

    b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts

  • Ваш .pem файл готов "pushcert.pem".

Ответ 8

Я пытался перейти от godaddy к движку приложения. Что трюк использовал эту строку:

openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr

Точно так же, как есть, но заменяя имя моим доменным именем (а не тем, что оно действительно даже имело значение)

И я ответил на все вопросы, относящиеся к общему имени/организации, как www.name.com

Затем я открыл csr, скопировал его, вставил в папку "Папа", затем загрузил его, распаковал, перешел в распакованную папку с терминалом и ввел:

cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt

Затем я использовал эти инструкции из Проблемы с SSL-протоколом Google Apps:

openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem

в точности как есть, кроме вместо privateKey.key я использовал имя .unencrypted.priv.key, а вместо www_mydomain_com.crt я использовал name.crt

Затем я загрузил public.pem в консоль администратора для "сертификата X.509, закодированного PEM", и загрузил private.pem для "незашифрованного секретного ключа RSA с кодировкой PEM"..

.. И это наконец сработало.

Ответ 9

Пытаясь загрузить сертификат GoDaddy в AWS, я несколько раз проваливался, но в конце концов это было довольно просто. Не нужно ничего конвертировать в .pem. Вы просто должны быть уверены, что включить сертификат GoDaddy в параметр цепи, например.

aws iam upload-server-certificate
    --server-certificate-name mycert
    --certificate-body file://try2/40271b1b25236fd1.crt
    --private-key file://server.key
    --path /cloudfront/production/
    --certificate-chain file://try2/gdig2_bundle.crt

И чтобы удалить предыдущую неудачную загрузку, вы можете сделать

aws iam delete-server-certificate --server-certificate-name mypreviouscert

Ответ 10

  • Открыть терминал.
  • Перейдите в папку, в которой находится ваш сертификат.
  • Выполните команду ниже, заменив имя на свой сертификат.

openssl pkcs12 -в YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts

  • Надеюсь, что это сработает!