Які відмінності між .pem
, .cer
і .der
?
Наскільки мені відомо, .cer
містить відкритий ключ. Чи є якісь відкриті фреймворки, які я можу використовувати для шифрування своїх даних за допомогою цього відкритого ключа?
Які відмінності між .pem
, .cer
і .der
?
Наскільки мені відомо, .cer
містить відкритий ключ. Чи є якісь відкриті фреймворки, які я можу використовувати для шифрування своїх даних за допомогою цього відкритого ключа?
cp
команда може це зробити :)
Відповіді:
.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.
Щоб використовувати відкритий ключ, що міститься у сертифікаті (і підписаний підписом у сертифікаті), слід використовувати будь-яку бібліотеку, яка аналізує сертифікати 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
, тринадцята буква алфавіту.