Проверьте формат server.key. Я только предполагал, что это был RSA. Но чтение первой строки файла, вероятно, скажет вам об этом.
maxwellb
10
Просто заголовок, cat server.crt server.key > server.pemкоторый не будет размещать открытый комментарий в своей строке, что кажется обязательным требованием. Курьерская почта доставила мне ад, и мне потребовались часы, чтобы понять, что происходит не так.
Грэм Уолтерс
1
Спасибо, Грэм. Различные инструменты будут генерировать файлы по-разному, и, в конечном счете, некоторая проверка хороша. Когда я выполнял эти шаги, файлы заканчивались символом новой строки, например.
maxwellb
Совет по объединению файлов .crt и .key вместе был очень полезен. Я хотел использовать свой сертификат с stunnel3, но у него не было способа указать файл ключа. Использование конкатенации сработало. (На самом деле, поскольку stunnel3 - это программа на Perl, я сам добавил к ней опцию для чтения файла ключа. Однако, поскольку позже я увидел, что конкатенация сработала, я вернул stunnel3 к его исходному коду.)
LS
2
Просто скажу, что cat server.crt server.key > server.includesprivatekey.pemполезен для SSL с haproxy 1.5.
jimm101
224
Мне нужно было сделать это для AWS ELB. После многократного избиения диалогом, вот что у меня получилось:
С AWS не забудьте добавить имя файла с помощью file://. Так это будет выглядеть так:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
FloatingRock
1
Вторая команда ничего не делает, если ваш ввод является файлом pem, поэтому при условии, что это так, вам нужна только первая команда
Kristofer
Потрясающие! Это хорошо сработало для меня! Просто преобразовал мои .key и .crt файлы в .pem, используя ваши строки кода, а затем я загрузил (копировал / вставил) через консоль AWS. Спасибо!
Диего Д
79
pemФайл содержит сертификат и закрытый ключ. Это зависит от формата вашего сертификата / ключа, но, вероятно, это так просто:
я продолжаю получать-bash: server.key.pem: Permission denied
tq
2
@tq: Это означает, что вам запрещено читать или писать этот файл.
STH
спасибо @sth поищу разрешение. но я делал это с помощью команд sudo
tq
8
@tq: cat server.crt server.key | sudo tee server.pem
Димир
2
следите за пропущенными символами новой строки, в нашем файле pem могут быть искаженные строки, например ----- КОНЕЦ СЕРТИФИКАТА ---------- НАЧАТЬ СЕРТИФИКАТ -----
Wolfgang Fahl
24
Кроме того, если вы не хотите, чтобы он запрашивал фразу-пароль, необходимо выполнить следующую команду:
Если вы хотите, чтобы файл начинался с, -----BEGIN RSA PRIVATE KEY-----и у вас есть файл, начинающийся с -----BEGIN ENCRYPTED PRIVATE KEY-----, это команда, которую вы хотите использовать.
Я заметил следующее: если вы используете openssl для генерации сертификатов, он захватывает как текстовую часть, так и часть сертификата base64 в файле crt. Строгий формат pem говорит ( определение вики ), что файл должен начинаться и заканчиваться BEGIN и END.
.pem - (Privacy Enhanced Mail) сертификат DER в кодировке Base64, заключенный между "----- BEGIN CERTIFICATE -----" и "----- END CERTIFICATE -----"
Таким образом, для некоторых библиотек (я сталкивался с этим в Java), которые ожидают строгого формата pem, сгенерированный crt не пройдет проверку как «неверный формат pem».
Даже если вы копируете или выполняете grep строки с помощью BEGIN / END CERTIFICATE и вставляете их в файл cert.pem, это должно работать.
Вот что я делаю, не очень чисто, но у меня работает, в основном фильтрует текст, начиная со строки BEGIN:
Другой вариант - просто пропустить не строгий сертификат openssl x509. Он выдаст действительный сертификат PEM: cat certificate.crt | openssl x509 > certificate.pem
T0xicCode
Если вы хотите получить все от «НАЧАЛА» до конца файла, это работа для sed. В частности, вы хотите что-то подобное sed -n '/--BEGIN/,$p' cert.crtв этом случае. Чтобы объяснить это: «-n» говорит sed не печатать ничего по умолчанию, а затем выражение диапазона /--BEGIN/,$применяет pкоманду (print) к строкам между первой строкой, которая содержит, --BEGINи концом file ( $).
dannysauer
4
Я пытался перейти от Godaddy к App Engine. Что сделал трюк, используя эту строку:
в точности как есть, за исключением того, что вместо privateKey.key я использовал name.unencrypted.priv.key, а вместо www_mydomain_com.crt я использовал name.crt
Затем я загрузил public.pem в консоль администратора для «сертификата X.509 в кодировке PEM» и загрузил private.pem для «секретного ключа RSA в кодировке PEM в незашифрованном виде».
Пытаясь загрузить сертификат GoDaddy в AWS, я несколько раз терпел неудачу, но в итоге все оказалось довольно просто. Не нужно ничего конвертировать в .pem. Нужно просто включить сертификат пакета GoDaddy в параметр цепочки, например
Это не сработало для меняAn error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Адам Раудонис
4
Скачать сертификат с временного портала по appleId,
Экспорт сертификата из цепочки ключей и имя (Certificates.p12),
Откройте терминал и перейдите в папку, в которой вы сохраняете файл Certificates.p12,
.pem
в.crt
и.key
.Ответы:
Ваши ключи уже могут быть в формате PEM, но просто названы с помощью .crt или .key.
Если содержимое файла начинается с,
-----BEGIN
и вы можете прочитать его в текстовом редакторе:Файл использует base64, который читается в ASCII, а не в двоичном формате. Сертификат уже в формате PEM. Просто измените расширение на .pem.
Если файл в двоичном формате:
Для server.crt вы бы использовали
Для server.key используйте
openssl rsa
вместоopenssl x509
.Возможно, server.key - это ваш закрытый ключ, а файл .crt - это возвращенный подписанный сертификат x509.
Если это для веб-сервера, и вы не можете указать загрузку отдельного частного и открытого ключа:
Вам может понадобиться объединить два файла. Для этого используйте:
Я бы порекомендовал именовать файлы с помощью «includesprivatekey», чтобы помочь вам управлять разрешениями, которые вы храните в этом файле.
источник
cat server.crt server.key > server.pem
который не будет размещать открытый комментарий в своей строке, что кажется обязательным требованием. Курьерская почта доставила мне ад, и мне потребовались часы, чтобы понять, что происходит не так.server.crt server.key > server.includesprivatekey.pem
полезен для SSL с haproxy 1.5.Мне нужно было сделать это для AWS ELB. После многократного избиения диалогом, вот что у меня получилось:
Спасибо NCZ
Редактировать: как говорит @floatingrock
С AWS не забудьте добавить имя файла с помощью
file://
. Так это будет выглядеть так:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
источник
file://
. Так это будет выглядеть так:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
pem
Файл содержит сертификат и закрытый ключ. Это зависит от формата вашего сертификата / ключа, но, вероятно, это так просто:источник
-bash: server.key.pem: Permission denied
Кроме того, если вы не хотите, чтобы он запрашивал фразу-пароль, необходимо выполнить следующую команду:
источник
-----BEGIN RSA PRIVATE KEY-----
и у вас есть файл, начинающийся с-----BEGIN ENCRYPTED PRIVATE KEY-----
, это команда, которую вы хотите использовать.это лучший вариант для создания файла .pem
источник
Я заметил следующее: если вы используете openssl для генерации сертификатов, он захватывает как текстовую часть, так и часть сертификата base64 в файле crt. Строгий формат pem говорит ( определение вики ), что файл должен начинаться и заканчиваться BEGIN и END.
Таким образом, для некоторых библиотек (я сталкивался с этим в Java), которые ожидают строгого формата pem, сгенерированный crt не пройдет проверку как «неверный формат pem».
Даже если вы копируете или выполняете grep строки с помощью BEGIN / END CERTIFICATE и вставляете их в файл cert.pem, это должно работать.
Вот что я делаю, не очень чисто, но у меня работает, в основном фильтрует текст, начиная со строки BEGIN:
источник
openssl x509
. Он выдаст действительный сертификат PEM:cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
в этом случае. Чтобы объяснить это: «-n» говорит sed не печатать ничего по умолчанию, а затем выражение диапазона/--BEGIN/,$
применяетp
команду (print) к строкам между первой строкой, которая содержит,--BEGIN
и концом file ($
).Я пытался перейти от Godaddy к App Engine. Что сделал трюк, используя эту строку:
Точно так же, как есть, но замена имени на мое доменное имя (не то, чтобы оно действительно даже имело значение)
И я ответил на все вопросы, касающиеся общего названия / организации, как www.name.com
Затем я открыл csr, скопировал его, вставил его в go daddy, затем загрузил его, разархивировал, перешел в разархивированную папку с терминалом и ввел:
Затем я использовал следующие инструкции по устранению неполадок с SSL для пользовательского домена Служб Google :
в точности как есть, за исключением того, что вместо privateKey.key я использовал name.unencrypted.priv.key, а вместо www_mydomain_com.crt я использовал name.crt
Затем я загрузил public.pem в консоль администратора для «сертификата X.509 в кодировке PEM» и загрузил private.pem для «секретного ключа RSA в кодировке PEM в незашифрованном виде».
.. И это, наконец, сработало.
источник
Пытаясь загрузить сертификат GoDaddy в AWS, я несколько раз терпел неудачу, но в итоге все оказалось довольно просто. Не нужно ничего конвертировать в .pem. Нужно просто включить сертификат пакета GoDaddy в параметр цепочки, например
И чтобы удалить предыдущую неудачную загрузку вы можете сделать
источник
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Запустите следующие команды:
а)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,б)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
источник
источник