Что такое формат файла PEM?
Расширение файла PEM используется файлами сертификатов для хранения и передачи криптографических ключей, сертификатов и других типов данных. Файлы PEM кодируются в Base64 и хранят данные в текстовом формате ASCII - каждый блок заключен в узнаваемые строки заголовка и подвала, такие как -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----.
Файлы сертификатов с кодировкой PEM часто используются на интернет-серверах, так как их легко просматривать с помощью любого стандартного текстового редактора. Файлы PEM применяются для аутентификации доверенных веб-сайтов и являются форматом по умолчанию на веб-серверах на базе Unix, таких как Apache и Nginx. Один файл .pem может объединять несколько блоков - например, сертификат сервера, промежуточные сертификаты и закрытый ключ - все в одном файле. PEM также широко используется для пар ключей SSH и конфигурации TLS/HTTPS.
Сертификат PEM использует цифровой подписанный открытый ключ в целях безопасности. Процесс аутентификации использует открытый ключ для идентификации владельца ключа и подтверждения того, что он является тем, за кого себя выдает. Закрытые ключи, хранящиеся в файлах .pem, могут быть дополнительно защищены парольной фразой для повышения безопасности.
Первоначально разработанная для Privacy-Enhanced Mail в начале 1990-х годов, кодировка PEM была формализована как стандарт IETF в RFC 7468 (2015). Она остается наиболее широко используемым форматом контейнера для сертификатов X.509 и криптографических ключей. Связанные бинарные форматы включают файлы .DER и PKCS#12; файлы .crt и .key часто являются просто переименованными файлами .pem, содержащими сертификат или ключ соответственно.
- Файлы PEM поддерживаются OpenSSL и большинством инструментариев TLS/SSL.
- Открытие файла
.pemв текстовом редакторе наглядно показывает размеченные разделы заголовка-----BEGIN-----и подвала-----END-----. - Один файл
.pemможет содержать различные типы объектов:CERTIFICATE,PRIVATE KEY,RSA PRIVATE KEY,PUBLIC KEY,CERTIFICATE REQUESTи другие.
Безопасность и защита
РИСК: HIGHОпасность файлов .pem заключается в случае с PRIVATE KEY. Файл .pem, содержащий «-----BEGIN PRIVATE KEY-----» (или RSA/EC PRIVATE KEY), является секретом: любой, у кого он есть, может выдать себя за ваш сервер, расшифровать трафик или войти в ваш облачный инстанс. НИКОГДА не вставляйте закрытый ключ .pem в онлайн-сервисы просмотра/конвертации и не отправляйте его по почте; выполняйте конвертацию локально с помощью OpenSSL. Установите строгие права доступа (SSH откажется работать с ключом, доступным для чтения всем - «chmod 600 key.pem»). Файл .pem, который является только CERTIFICATE (открытым), можно безопасно передавать. Остерегайтесь онлайн-конвертеров сертификатов для всего, что связано с ключами. Сами файлы являются инертным текстом и не могут исполняться.
Детали формата
в двух словахПрограммы, открывающие файлы PEM
Технические подробности
глубокая спецификация| Кодировка | Данные DER в кодировке Base64, заключенные в строки заголовка и подвала ASCII |
| Структура файла | Один или несколько блоков PEM, каждый из которых ограничен строками `-----BEGIN <type>-----` и `-----END <type>-----` |
| Базовый бинарный формат | DER (Distinguished Encoding Rules), бинарный формат сериализации ASN.1 |
| MIME-тип | `application/x-pem-file` |
| Поддерживаемые типы объектов | `CERTIFICATE`, `PRIVATE KEY`, `RSA PRIVATE KEY`, `PUBLIC KEY`, `CERTIFICATE REQUEST` |
| Соглашение о длине строки | Данные Base64 разбиваются по 64 символа на строку согласно RFC 7468 |
| Поддержка нескольких объектов | Один файл `.pem` может содержать несколько блоков PEM, например, полную цепочку сертификатов и закрытый ключ |
| Общие альтернативные расширения | `.crt`, `.cer`, `.key`, `.ca-bundle` - тот же формат PEM, разные названия в зависимости от роли |
| Защита закрытого ключа | Блоки ключей могут быть зашифрованы парольной фразой с использованием PKCS#8 или устаревших заголовков шифрования PEM |
| Основные сценарии использования | Сертификаты серверов TLS/HTTPS, пары ключей SSH, пакеты сертификатов CA, сертификаты подписи кода |
| Совместимость | Конвертируется в бинарный `.der` с помощью `openssl x509 -outform DER`; файлы PKCS#12 (`.p12`) могут быть экспортированы в PEM |
| Набор символов | Только US-ASCII - алфавит Base64 (A-Z, a-z, 0-9, +, /), а также тире заголовка/подвала и метки типов |
| Обработка переноса строк | RFC 7468 предписывает окончания строк LF (\n); многие инструменты также принимают CRLF для обратной совместимости |
| Синтаксис заголовка/подвала | Пять тире, `BEGIN` или `END`, пробел, метка типа объекта, пять тире - например, `-----BEGIN CERTIFICATE-----` |
| Выпущен | PEM email RFCs 1421-1424 (1993); the encoding lives on as the textual format, codified in RFC 7468 (2015) |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.rfc-editor.org |
Конвертации PEM
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах PEM.