Як я можу створити файл PEM із сертифіката SSL?
Це файли, які в мене є:
.crt
server.csr
server.key
Як я можу створити файл 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
.
Сервер.key, ймовірно, ваш приватний ключ, а .crt-файл - це повернений, підписаний сертифікат x509.
Якщо це для веб-сервера, ви не можете вказати завантаження окремого приватного та відкритого ключа:
Можливо, вам знадобиться об'єднати два файли. Для цього використовуйте:
cat server.crt server.key > server.includesprivatekey.pem
Я рекомендую назвати файли з "includeprivatekey", щоб допомогти вам керувати правами, які ви зберігаєте з цим файлом.
cat server.crt server.key > server.pem
не розмістить відкритий коментар у власній лінії, що, здається, є обов'язковою умовою. Кур'єрська пошта дала мені пекло, і мені знадобилися години, щоб зрозуміти, що пішло не так.
server.crt server.key > server.includesprivatekey.pem
нарікання сказати, що кішка корисна для SSL з гапрокси 1,5.
Мені потрібно було це зробити для AWS ELB. Після того, як мене багато разів побили діалоговим вікном, нарешті ось що працювало для мене:
openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem
Дякую NCZ
Редагувати: Як говорить @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
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
Файл містить сертифікат і закритий ключ. Це залежить від формату вашого сертифіката / ключа, але, ймовірно, це так просто, як це:
cat server.crt server.key > server.pem
-bash: server.key.pem: Permission denied
Крім того, якщо ви не хочете, щоб він запитував парольну фразу, необхідно виконати таку команду:
openssl rsa -in server.key -out server.key
-----BEGIN RSA PRIVATE KEY-----
починався і мав файл, який починається з -----BEGIN ENCRYPTED PRIVATE KEY-----
, це команда, яку ви хочете використовувати.
Я помітив: якщо ви використовуєте openssl для генерації сертифікатів, він фіксує як текстову частину, так і частину сертифіката base64 у файлі crt. Строгий формат pem говорить ( визначення wiki ), що файл повинен починатися і закінчуватися BEGIN і END.
.pem - (Поліпшена конфіденційність пошти) Base64, закодований сертифікат DER, укладений між "----- НАЧАЙТЕ СЕРТИФІКАТ -----" та "----- КОНТРОЛЬНИЙ СЕРТИФІКАТ -----"
Так що для деяких бібліотек (я стикався з цим у Java), які очікують строгого формату pem, згенерований crt не зможе перевірити як "недійсний формат pem".
Навіть якщо ви скопіюєте або зкресліть рядки за допомогою BEGIN / END CERTIFICATE та вставте їх у файл cert.pem, він повинен працювати.
Ось що я роблю, не дуже чисто, але працює для мене, в основному він фільтрує текст, починаючи з рядка BEGIN:
grep -A 1000 BEGIN cert.crt> cert.pem
openssl x509
. Він видасть дійсний сертифікат PEM: cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
в цьому випадку. Щоб пояснити це: "-n" повідомляє sed нічого не друкувати за замовчуванням, і тоді вираз діапазону /--BEGIN/,$
змушує p
команду (print) застосовувати до рядків між першим рядком, який містить, --BEGIN
і кінцем файлу ( $
).
Я намагався перейти від godaddy до двигуна додатків. У чому полягає хитрість використання цього рядка:
openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr
Точно так, як є, але замінивши ім’я моїм доменним іменем (не те, щоб воно насправді навіть мало значення)
І я відповів на всі питання, що стосуються загальної назви / організації як www.name.com
Потім я відкрив csr, скопіював його, вставив у тато go, потім завантажив його, розпакував, перейшов до розпакованої папки з терміналом і ввів:
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 на консоль адміністратора для "сертифікату, закодованого PEM X.509", і завантажив private.pem для "Незашифрованого PEM, закодованого приватним ключем RSA".
.. І це нарешті спрацювало.
Намагаючись завантажити сертифікат 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
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
openssl pkcs12 -в YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts
.pem
в.crt
та.key
.