Чи потрібно конвертувати .CER в .CRT для сертифікатів SSL Apache? Якщо так, то як?


121

Мені потрібно налаштувати сервер Apache 2 за допомогою SSL.

У мене є файл * .key, але вся документація, яку я знайшла в Інтернеті, вказана * .crt файлами, і мій КА надав мені лише файл * .cer.

Чи файли * .cer збігаються з * .crt? Якщо ні, то як я можу конвертувати CER у формат CRT?


11
CERа CRTрозширення нічого не означають. Різні постачальники PKI використовують різні розширення для однієї і тієї ж речі. Якщо файл є двійковим, то його, ймовірно, кодується ASN.1 / DER. Якщо файл читається людиною -----BEGIN CERTIFICATE-----, його PEM закодовано. Що у вас є (DER або PEM), і що вам потрібно (DER або PEM)?
jww

Відповіді:


107

Розширення файлів для криптографічних сертифікатів насправді не такі стандартизовані, як можна було б очікувати. Windows за замовчуванням розглядає подвійне клацання .crtфайлу як запит на імпорт сертифіката в магазин кореневих сертифікатів Windows, але розглядає.cer файл як запит просто для перегляду сертифіката. Отже, вони відрізняються тим сенсом, що Windows має певне притаманне інше значення для того, що відбувається, коли ви двічі клацніть кожен тип файлів.

Але спосіб, яким Windows обробляє їх, коли ви двічі клацніть по них, - це лише одна різниця між ними. Обидва розширення просто означають, що він містить публічний сертифікат. Ви можете перейменувати файл сертифіката, щоб використовувати одне розширення замість іншого в будь-якій системі чи конфігураційному файлі, які я бачив. На платформах, що не належать до Windows (і навіть у Windows), люди не особливо ретельно ставляться до того, яке розширення вони використовують, і ставляться до них обох взаємозамінно, оскільки між ними немає різниці, якщо вміст файлу є правильним.

Зробити заплутаність у тому, що є два стандартних способи зберігання даних сертифікатів у файлі: один - це "двійкове" кодування X.509, а інший - текстове "кодування" base64, яке зазвичай починається з " -----BEGIN CERTIFICATE-----". Вони кодують однакові дані, але різними способами. Більшість систем приймають обидва формати, але, якщо вам потрібно, ви можете конвертувати один в інший за допомогою openssl або інших інструментів. Кодування в файлі сертифіката дійсно не залежить від того, яке розширення хтось надав.


Я розумію, що вони обидва кодування X.509. Ви не говорите інакше, але асиметричне використання x.509 вище може запропонувати читачеві інакше. Читачеві варто зазначити, що сертифікати можуть бути перетворені вперед і назад між цими двома кодуванням, оскільки, як згадується в цій відповіді, вони містять ту саму інформацію. Дивіться іншу відповідь з командами openssl x509 -inform.
FreeText

55

Відповідно до документації mod_ssl :

SSLCertificateFile: 
   Name: SSLCertificateFile
   Description: Server PEM-encoded X.509 certificate file

Файл сертифіката повинен бути кодованим PEM X.509, файл файлу сертифіката:

openssl x509 -inform DER -in certificate.cer -out certificate.pem

Буде чи це вирішити Ssl помилки CERT, коли позаду zscaler, працює vagrantна win( vbox homestead), встановивши наші довірені кореневі сертифікати в мандрівну коробку? Я був би scpїх, потім скористався перетворенням і посилання на них, /etc/ssl/certsа також скопіював вміст у ca-certificates.crtфайл перед повторним виданням, і все ще я отримав google-recaptcha tls sslпомилку file_get_contentsна вікні розробника.
блам

54

В основному є два типи кодування сертифікатів CER, DER та Base64. Коли тип DER повертає сертифікат завантаження помилки (підпрограми кодування asn1), спробуйте PEM і він спрацює.

openssl x509 -inform DER -in certificate.cer -out certificate.crt

openssl x509 -inform PEM -in certificate.cer -out certificate.crt


3
Формат DER працював для мене, коли мій файл cer виглядав як двійковий, коли я намагався його відредагувати ... дякую!
Бред Паркс

1
Для читача я знайшов корисну сторінку openssl корисною. Для мене було неоднозначно, яка з команд робила що (тобто в який спосіб було перетворення). Параметр -inform вказує формат вхідного файлу -in, який є інтуїтивно зрозумілим, але якщо ви вже трохи заплутані, приємно це чітко знати. Дивіться openssl.org/docs/manmaster/man1/openssl-x509.html
FreeText

32

Я припускаю, що у вас є файл .cer, що містить дані сертифікованого кодуванням PKCS # 7, і ви хочете перетворити його в кодовані PEM дані сертифіката (як правило, .crt або .pem файл). Наприклад, файл .cer, що містить дані, закодовані PKCS # 7, виглядає так:

----- ПОЧАТОК PKCS7 -----
MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH
...
POI9n9cd2cNgQ4xYDiKWL2KjLB + 6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G
+ bKHADEA
----- END PKCS7 -----

Дані сертифікату PEM виглядають приблизно так:

----- ПОЧАТИ СЕРТИФІКАТ -----
MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm
...
nv72c / OV4nlyrvBLPoaS5JFUJvFUG8RfAEY =
----- ЗАКОННИЙ СЕРТИФІКАТ -----

Існує команда OpenSSL, яка перетворить файли .cer (з даними PKCS # 7) у дані PEM, з якими ви можете розраховувати ( BEGIN CERTIFICATEблок у прикладі вище). Ви можете примусити дані PKCS # 7 у формат PEM за допомогою цієї команди у файлі, який ми будемо називати certfile.cer:

openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem

Зауважте, що файл .cer або .pem може містити один або більше сертифікатів (можливо, весь ланцюжок сертифікатів).


1
Було б корисно, якби у вас було джерело цього припущення. Я думаю, що люди використовують (можливо, неправильно) .cer, .crt, .pem взаємозамінно), тому наявність джерела істини виправить помилки.
PhilT

30

CER - сертифікат X.509 у двійковій формі, кодується DER .
CRT - це бінарний сертифікат X.509, інкапсульований у текстовому ( базовому 64 ) кодуванні.

Це не те саме кодування.


13
Ця відповідь просто неправильна. І .CER, і .CRT можуть використовувати кодування DER або PEM (текст). Розширення .pem та .der відображають кодування, .cer та .crt не відповідають. Детальніше .
eis

1
Насправді має бути навпаки. Але всі ці розширення давно плутаються, тому не варто покладатися на них.
Клаудіо Флореані

16

Відповідь на питання, як перетворити .cer файл у .crt файл (вони закодовані по-різному!), Це:

openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt

5
Це не працювало для мене! Я використав:openssl x509 -inform der -in certificate.cer -out certificate.pem
sj59

Я отримую це повідомлення про помилку:unable to load PKCS7 object
friederbluemle

@friederbluemle Ви перевірили цю відповідь? serverfault.com/questions/417140/…
Олександр Пресбер

Це те, що я повинен був зробити, щоб мій позитивний сертифікат SSL був готовий до перетворення в PKCS12 для використання в Azure.
Оуен

16

Я використовую команду:

openssl x509 -inform PEM -in certificate.cer -out certificate.crt

Але CER - сертифікат X.509 у двійковій формі, кодується DER. CRT - це бінарний сертифікат X.509, інкапсульований у текстовому (базовому-64) кодуванні.

Через це, можливо, ви повинні використовувати:

openssl x509 -inform DER -in certificate.cer -out certificate.crt

А потім імпортувати ваш сертифікат:

Скопіюйте свій КА на dir:

/usr/local/share/ca-certificates/

Використовувати команду:

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Оновіть магазин CA:

sudo update-ca-certificates



3

Файл .cer та .crt повинен бути взаємозамінним, що стосується імпортування їх у сховище ключів.

Погляньте на вміст файлу .cer. Стерти що-небудь перед -----BEGIN CERTIFICATE-----рядком і після -----END CERTIFICATE-----рядка. Вам залишиться рядок BEGIN / END з купою матеріалів, закодованих Base64.

-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----

Потім просто імпортуйте його у свій файл ключів за допомогою keytool.

keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer

Що мені допомогло, це ваш коментар про БАЗОВУ-64 ВИКОНАННЯ. Звичайний серт, мабуть, є спеціальним кодуванням і не читається простим текстом. Дякую.
DRapp

-2

Просто роби

openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt

8
Чи хотіли б ви детальніше розібратися, що саме робить цей рядок і чому саме ви використовуєте ці параметри? Ця відповідь досить коротка і може бути важко зрозуміти людям з меншим досвідом.
GameDroids
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.