Розробники · Base64 енкодер & decoder
PEM пояснено: чому сертифікати та ключі Base64 між BEGIN і END
· Підземелля
Опубліковано ToolAcre · Редакція журналу
бази64 коди

Р PEM файл DER Двосторонній загортання в Base64 з маркуванням броньованих ліній. Цей пост пояснює походження формату, його правила лінії і які ви можете і не можете дізнатися, декодуючи один.
Сертифікат, який «looks як текст», але не виходить на парс — накладний тип, повернення променевих вагонів та формат під ним
А.А PEM файл є base64-encoded бінарними, загортаються в текстові етикетки. Ім'я надходить від конфіденційності-Enhanced Mail (Пошта)RFC 1421, 1992), які використовували цей формат для зашифрованих повідомлень. Формат виживає сьогодні в TLS сертифікати, SSH ключі, і GPG ключі. Структура проста: рядок кажучи ----BEGIN CERTIFICATE-------- BEGIN PRIVATE KEY, BEGIN PUBLIC KEY, і т.д., з подальшим 64-чарівні лінії основного64 тексту, далі -----END CERTIFICATE-----.
Базовий64 корпус декодує бінарному форматі DER (Пошукові правила кодування), що є способом послідовно виконувати структуровані дані (зокрема, ASN.1 конструкції. Декодування base64 дає вам бінарні; читання бінарних вимагає розуміння ASN.1, який комплексний. Мистецтво PEM бронь існує тому, що бінарні файли важко надсилати та редагувати. Цей файл сертифікату в чистому вигляді буде пошкоджений при проходженні старих поштових систем, USENET, або веб-форми.
Виглядає текст броні PEM блок — етикетки навколо тіла Base64
За base64-encoding the бінарний і обгортаючи його в текстових ярликах, весь сертифікат стає 7-розсилка ASCII текст, який виживає будь-який транспорт. Відкриваємо текст, система пошти не пошкоджена. ------BEGIN до ---END лінії – етикетки для людини та автоматизованих інструментів; вони чітко позначають, які дані всередині. Сертифікат на етикетку CERTIFICATE; приватний ключ позначений PRIVATE KEY.
Наклейка не перевіряється криптографічним програмним забезпеченням, це просто підказка для людини та інструментів. Мистецтво 64- обмеження лінійки символів в PEM досягнення RFC 1421 і те ж MIME з огляду на те, що електронна база64: старі поштові системи мали ліміти довжини лінії, і 64 символи, що підходять на терміналі 1980-х. PEM обмотує базову64 вихід на 64 символи з закінченням лінії (CR LF на Windows, LF на Unix).
З позначеного тексту для декодованих байтів — це репозиторій не встановлює історію форматів
При декодуванні PEM сертифікат, що повинен розмітити бронепластильні лінії (-------------------BEGIN..., -----END...) і лінії розбиття, потім base64-decode решти. Повернути або розірвати етикетку можна за допомогою траурної картки. Лінія обгортання не входить до базового стандарту 64 (стандарт)RFC 4648 base64 незламаний; він специфічний для PEM. Усередині base64 є DER-encoded бінарними. DER , ASN.1 (Абстрактна система визначення Синтаксису), комплексна специфікація для представлення структур даних.
Сертифікат є структурованим записом, що містить назву суб'єкта, публічний ключ, підпис та метадані. ASN.1 не описує байти безпосередньо; він описує, як структура повинна бути зашифрована.
Анатомія блоку як введення в цей інструмент — видалення етикеток і проходу тільки тіла Base64
Кодування починається з міт-довжніх драфтів. Наприклад SEQUENCE в ASN.1 зашифровано як тег 0x30, після чого довжина змісту, слідуючи самим змістом. Сертифікат завжди починається з байтів 0x30 0x82 (послідовність, довжина закодовано в двох байтах), які з'являються як MII в base64.
Перевірити сертифікат без його оформлення: перші три символи PEM сертифікат тіла практично завжди MII (який 0x30 0x82 в base64, початок SEQUENCE... Якщо PEM блок не відхиляє до 0x30, базовий64 пошкоджений або етикетка неправильна. Інструмент для кодування тіла та показати його шістнадцятий: вставте базові лінії (без ------BEGIN і END броньовані лінії, видалення ламків, декодування.
Що декодування видатків: бінарні байти, не зараховані поля довідки
Якщо вихід бінарний з 30 82, ймовірно, є дійсним структура сертифіката. Якщо це незрівнянно або текст, декод не вдалося або base64 неправильно. Інша PEM помилки: мітка невідповідності (наприклад, орган сертифіката з PRIVATE KEY мітка), Windows, виписка, що закінчується ( some parsers choke on CRLF), типо в бронетанковій лінії (випадкові пробіли або символи), або відсутній лінійний прорив.
Інструменти очікують ----BEGIN CERTIFICATE------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------BEGIN CERT------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ BEGIN CERTIFICATE. Копіювання PEM з веб-переглядача або веб-переглядача PDF може ввести Unicode лапки або смарт-ролики замість ASCII котирування, розбиття етикетки. Вставте приватний ключ в поле сертифіката є загальним помилкою, а парсер відхиляє його, тому що етикетка не відповідає. PEM підтримує декілька блоків в одному файлі.
Успішний приклад: декодування короткого тіла та інспектування байтів без підтвердження підпису сертифіката
Анонім SSH файл ключа може містити як приватний ключ (розкладений) PRIVATE KEY) і публічний ключ (розміщений PUBLIC KEY), або кілька блоків сертифікатів. Парсер зчитував файл з вершини, шукаючи лінії, починаючи з -----BEGIN. Коли він знаходить один, він читає до ----END з відповідним етикеткою, екстрактами та базовими64-декодами тіла, та обробляє його. Далі він продовжує шукати наступний блок.
Мережа сертифікатів випадкового зберігання (багатоплісний PEM блоки для сертифікату та його проміжних елементів, які діють в одному файлі, якщо всі етикетки правильні. Мистецтво PEM формат був стандартизований для конфіденційності-Enhanced Mail (для конфіденційності)RFC 1421) на початку 1990-х.
Що це не криється — парсінг ASN.1 структури, шифрування та шифрування ключів PKCS#12 труси
RFC 7468 (2015) модернізовано визначення, уточнення правил довжини лінії, форматування броньованих ліній, а також крайових випадків. Більшість інструментів та стандартів RFC 7468 тепер. Інші формати бінарних в Інтернеті існують (наприклад DER-до-гекс за деякі протоколи, але PEM з base64 і ASCII мітки є дефолтом для криптографії та TLS тому, що це людський, простий текст, і простий у копіюванні або відправці.
Будівництво PEM блок: візьміть DER біржовий (наприклад, сертифікат з криптографічної бібліотеки), кодування його на base64, загортання результату на 64 символи з лініями перерв, а також об'ємом з -----BEGIN CERTIFICATE------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------END CERTIFICATE------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ЗАПИТАННЯ PEM блок: знайти ----BEGIN до ---END лінії, витягти базовий64 кузов (видалення броньованих і лінійних розривів), base64-decode для отримання бінарних, потім запарити DER і ASN.1 біржовий.
Поруч: PEM бази64 з мітками — як Base64 енкодер і декодер дає вам локальне місце, щоб спробувати корпус блоку Base64, повністю в браузері
Більшість інструментів автоматизації цього; ви рідко конструєте PEM від руки. Але розуміння структури корисно при відключенні помилки парсингу або при ручному перевірці сертифіката. А.А PEM сертифікат виглядає як текст, але зміст бінарних даних. Читання стартових та кінцевих етикеток не говорить вам, що містить сертифікат; ви повинні декодувати базову форму64 і задавати його ASN.1 бачити назву суб'єкта, публічний ключ, емітент і закінчення терміну дії.
Інструмент для кодування тіла, щоб перевірити перші кілька байтів. Для повного оформлення необхідно ASN.1 parser (найбільша мова програмування мають бібліотеки для цього). Ключовий інсайт - це те, що PEM - формат контейнера: він зберігає будь-який DER-кодовані дані, не тільки сертифікати. Наклейка розповідає про те, що ви використовуєте, але парсер повинен правильно обробляти тип даних.