У чому різниця між .pem, .cer та .der?


85

Які відмінності між .pem, .cerі .der?

Наскільки мені відомо, .cerмістить відкритий ключ. Чи є якісь відкриті фреймворки, які я можу використовувати для шифрування своїх даних за допомогою цього відкритого ключа?


2
Я думаю, що всі вони є лише форматами файлів, які можуть зберігати будь-який ключ; є інструменти, які можуть вільно конвертувати між ними.
IMSoP

1
@IMSoP Ви маєте рацію, але для .cer to .der cpкоманда може це зробити :)
Маартен Бодеус

Я видалив конкретну частину iOS, схоже, є безліч прикладів, таких як ця та інша за допомогою .pem.
Маартен Бодеус

Відповіді:


88

.pem, .cerі .derє усі розширення файлів для файлів, які можуть містити сертифікат X.509 v3.

.derрозширення

DER - це метод кодування даних, що складають сертифікат. DER сам може представляти будь-який тип даних, але зазвичай він описує закодований сертифікат або контейнер CMS.

Структура сертифіката описується за допомогою мови подання даних ASN.1. BER і DER - це двійкові методи кодування даних, описаних в ASN.1.

.pemрозширення

PEM - це метод кодування двійкових даних у вигляді рядка (броня ASCII). Він містить заголовок і рядок нижнього колонтитула (вказуючи тип даних, які кодуються, і показуючи початок / кінець, якщо дані з’єднані ланцюгом), а дані посередині - це базові 64 дані. У випадку, якщо він кодує сертифікат, він просто міститиме базове 64 кодування сертифіката ПЕД. PEM розшифровується як Поліпшена конфіденційність пошти; пошта не може містити некодовані двійкові значення, такі як ПЕР, безпосередньо.

PEM може також кодувати / захищати інші типи даних, що стосуються сертифікатів, таких як відкриті / приватні ключі, запити на сертифікати тощо. Якщо вміст є загальним сертифікатом X509v3, то PEM кодується як:

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

Зауважте, що файл PEM може також містити повний ланцюжок сертифікатів, де ланцюжок починається з листка / кінця сертифіката служби, а потім - сертифіката, який його підписав, як правило, але не включаючи надійний кореневий сертифікат. Отже, якщо у вас бракує сертифікатів, ви можете поглянути на перший.

.cerабо .crtрозширення

.cerпросто означає сертифікат. Зазвичай це дані, закодовані DER, але Windows також може приймати дані, закодовані PEM. Вам потрібно поглянути на вміст (наприклад, за допомогою fileутиліти в системах posix), щоб побачити, що знаходиться у файлі, щоб бути впевненим на 100%.

Інші формати OpenSSL

Погляньте на цю відповідь, щоб отримати більш широкий перелік того, що підтримується OpenSSL.


Щоб використовувати відкритий ключ, що міститься у сертифікаті (і підписаний підписом у сертифікаті), слід використовувати будь-яку бібліотеку, яка аналізує сертифікати X.509 та виконує шифрування RSA. Ви можете скористатися інструментом, який виявляє / обробляє кодування PEM, або спочатку можна перетворити сертифікат на DER, видаливши кодування PEM.

Командний рядок OpenSSL містить безліч варіантів перетворення між PEM та DER, роздрукування інформації про сертифікат високого рівня або синтаксичного аналізу ASN.1, щоб отримати уявлення про те, що там знаходиться, на низькому рівні.

Деталі

Як і більшість структур ASN.1, кодований DER сертифікат завжди починається з байта, 30який є кодуванням тегів ASN.1 SEQUENCE. Якщо ви бачите багато повторень у файлі, то це нормально; це просто структура яка чітко визначена.

Подібним чином, основа 64 у файлі, кодованому PEM, завжди починається з букви, Mяк ASN.1 SEQUENCEпочинається з байта 30, тому перші 6 бітів є 001100, що перекладається на число 12, яке є індексом букви M, тринадцята буква алфавіту.

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