Вопрос

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

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

  • .crt
  • server.csr
  • server.key
Это было полезно?

Решение

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

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

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

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

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

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

Для server.key используйте 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

Спасибо НКЗ

Редактировать:Как говорит @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

А 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 говорит (определение вики), что файл должен начинаться и заканчиваться словами BEGIN и END.

.pem-(Сертификат DER, прилагаемый между "----- Begin Enhanced Mail) BASE64, прилагаемым между" ----- BEGAN SERT SERTICAIT

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

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

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

grep -A 1000 НАЧАТЬ cert.crt > cert.pem

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

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

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

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

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

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

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

Пытаясь загрузить сертификат 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
  1. Скачать сертификат с временного портала по appleId,
  2. Экспортируйте сертификат из цепочки для ключей и укажите имя (Certificates.p12).
  3. Откройте терминал и перейдите в папку, в которой вы сохраняете указанный выше файл Certificates.p12,
  4. Запустите следующие команды:

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

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

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

openssl pkcs12 -in ВАШ_СЕРТИФИКАТ.p12 -out ВАШ_СЕРТИФИКАТ.pem -nodes -clcerts

  • Надеюсь, что получится!!
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top