Как добраться.файл PEM от.ключ и.файлы crt?

как я могу создать файл PEM из SSL-сертификата?

эти файлы, которые у меня есть в наличии:

  • .crt
  • server.csr
  • server.key

10 ответов


ваши ключи уже могут быть в формате PEM ,но только с именем.ЭЛТ или .ключ.

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

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

если файл в двоичном виде:

для сервера.ЭЛТ, вы бы использовать

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

для сервера.ключ, используйте openssl rsa на месте openssl x509.

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

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

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

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

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


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

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

спасибо NCZ

Edit: как говорит @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


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

cat server.crt server.key > server.pem

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

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

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

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

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

.PEM - (улучшенная конфиденциальность Почты) base64 закодированный сертификат DER, заключенный между "- - - - - - начните сертификат - - - - - " и " - - - - - конец Сертификат-----"

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

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

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

grep-A 1000 начать сертификат.ЭЛТ > верняк.Пем!--3-->


Я пытался перейти от godaddy к App engine. Какой фокус был в использовании этой строки:

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

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

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

затем я открыл csr, скопировал его, вставил его в go daddy, затем загрузил его, распаковал его, перешел к распакованной папке с терминалом и вошел:

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

затем я использовал эти инструкции от проблемы с Google Apps пользовательский домен SSL, в которой находились:

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

именно так, как есть, только вместо закрытый ключ.ключ я использовал имя.нешифрованный.прив.ключ, а вместо www_mydomain_com.crt, я использовал имя.crt

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

.. И что, наконец, работал.


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

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

  1. загрузите сертификат с предварительного портала appleId,
  2. экспорт сертификата из цепочки ключей и дать имя (сертификаты.p12),
  3. откройте терминал и папку goto, где вы сохраняете вышеуказанные сертификаты.файл p12,
  4. выполните следующие команды:

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

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

  5. ваш .PEM файл готов " pushcert.УГР."

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

в OpenSSL pkcs12 из -за YOUR_CERTIFICATE.p12-out YOUR_CERTIFICATE.pem-nodes-clcerts

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