2009-06-13 5 views

ответ

587

Ваши ключи уже могут быть в формате 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.

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

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

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

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

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

+2

Проверьте формат server.key. Я только предполагал, что это RSA. Но, читая первую строку файла, вы, вероятно, скажете об этом. – maxwellb

+0

Спасибо, что выбрали лишнюю милю. вы облегчили мою работу. Отличное объяснение. –

+7

Просто голова, что 'cat server.crt server.key> server.pem' не будет размещать открытый комментарий в своей собственной строке, что, по-видимому, является требованием. Курьерская почта дала мне ад, и мне потребовались часы, чтобы понять, что происходит не так. –

68

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

cat server.crt server.key > server.pem 
+0

i keep get '-bash: server.key.pem: Permission denied' –

+2

@tq: Это означает, что вам запрещено читать или записывать этот файл. – sth

+0

Благодарю вас, @sth будет искать разрешение. но я делал это с помощью команд sudo –

18

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

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

Если вы хотите, чтобы файл начинался с '----- BEGIN RSA PRIVATE KEY -----' и имел тот, который начинается с '----- BEGIN ENCRYPTED PRIVATE KEY -----', это которую вы хотите использовать. –

178

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

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

+15

С AWS не забудьте указать имя файла с 'file: //'. Таким образом, это будет выглядеть так: 'aws iam upload-server-certificate --server-certificate-name blah --certificate-body file: //~/Desktop/server.crt - файл с ключом: // ~/Desktop/private.key --path/cloudfront/static/' – FloatingRock

+0

Хотел бы я дать ответ на миллион очков! Я должен это делать каждые несколько месяцев. Я действительно должен это записать. Сохраняет меня каждый раз, когда я должен добавить SSL для ELB на Amazon! Спасибо! – Prometheus

+1

Вторая команда ничего не делает, если ваш вход является файлом pem, поэтому, если предположить, что это так, вам нужна только первая команда – Kristofer

3

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

.pem - (Privacy Enhanced Mail) в кодировке Base64 сертификата МЭД, , заключенное между "----- BEGIN CERTIFICATE -----" и «----- END СЕРТИФИКАТ ---- - "

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

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

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

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

+1

другой вариант - просто передать нестойкий сертификат через 'openssl x509'. Он выдаст действительный сертификат PEM: 'cat certificate.crt | openssl x509> certificate.pem' – T0xicCode

+0

Если вы хотите получить все, от «BEGIN» до конца файла, это работа для sed. В частности, вам нужно что-то вроде 'sed -n '/ - BEGIN /, $ p' cert.crt' в этом случае. Чтобы объяснить это: «-n» сообщает sed не печатать ничего по умолчанию, а затем выражение диапазона «/ - BEGIN /, $» делает команду 'p' (печать) применимой к строкам между первой строкой, которая содержит '--BEGIN' и конец файла (' $ '). – dannysauer

2
  1. Скачать сертификат от временного портала по AppleID,
  2. Экспорт сертификата из ключей цепи и дать имя (Certificates.p12)
  3. Открыть терминал и Гото папку, в которой вы сохраняете выше Certificates.p12 файла
  4. Run ниже команд:

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

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

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

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

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

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

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

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

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

Тогда я открыл ЧСР, скопировал его, вставить его в Go Daddy, затем скачал его, расстегнул его, переходите к распакованной папке с терминалом и вошел:

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

Тогда я использовал эти инструкции от Trouble with Google Apps Custom Domain SSL, которые были:

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 в консоль администратора для «PEM закодированного сертификата X.509», и загрузил private.pem для «незащищенного PEM закодированной RSA секретного ключа» ..

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

3

Попытка загрузить сертификат 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 
0
  • Открыть терминал.
  • Перейдите в папку, в которой находится ваш сертификат.
  • Выполните команду ниже, заменив имя на свой сертификат.

OpenSSL PKCS12 -in YOUR_CERTIFICATE.p12 отъезда YOUR_CERTIFICATE.pem -nodes -clcerts

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

 Смежные вопросы

  • Нет связанных вопросов^_^