Как получить файл .pem из файлов .key и .crt?
Вопрос
Как я могу создать файл 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
- Скачать сертификат с временного портала по appleId,
- Экспортируйте сертификат из цепочки для ключей и укажите имя (Certificates.p12).
- Откройте терминал и перейдите в папку, в которой вы сохраняете указанный выше файл Certificates.p12,
Запустите следующие команды:
а)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,б)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
- Ваш файл .pem готов «pushcert.pem».
- Открытый терминал.
- Перейдите в папку, где находится ваш сертификат.
- Выполните команду ниже, заменив имя своим сертификатом.
openssl pkcs12 -in ВАШ_СЕРТИФИКАТ.p12 -out ВАШ_СЕРТИФИКАТ.pem -nodes -clcerts
- Надеюсь, что получится!!