1️⃣ Что такое формат PEM?
PEM (Почта с улучшенной конфиденциальностью) — это текстовый формат, используемый для хранения и передачи ключей и сертификатов. Он кодирует двоичные данные DER в формате Base64 и обертывает их верхними и нижними колонтитулами, например-----НАЧАЛО <МЕТКА>-----и-----КОНЕЦ <МЕТКА>-----. Общие этикетки включают в себяПУБЛИЧНЫЙ КЛЮЧ, ЧАСТНЫЙ КЛЮЧиСЕРТИФИКАТ. Его легко копировать, вставлять и передавать в текстовых рабочих процессах, что делает его одним из наиболее распространенных форматов обмена ключами.
2️⃣ Какие еще форматы распространены, кроме PEM?
- DER: чистый двоичный формат, в котором структуры ASN.1 хранятся напрямую. Он не читается человеком и часто встречается в экосистемах Java.
- HEX: выражает двоичное содержимое DER в виде шестнадцатеричной строки, что полезно для отладки или внедрения в код.
- Base64 (без заголовков): необработанный DER, закодированный как Base64 без заголовков PEM, часто используемый в компактных конфигурациях или в полезных нагрузках токенов.
- PKCS#12 (PFX): формат двоичного контейнера, который может объединять вместе открытый и закрытый ключи, обычно защищен паролем и часто используется браузерами или системами Windows.
3️⃣ Когда следует использовать каждый формат?
- PEM: наиболее универсальный вариант, подходящий для OpenSSL, веб-серверов (Nginx/Apache) и обмена API.
- DER: обычно используется в средах Java или там, где требуется строгое двоичное хранение.
- HEX: полезен при отладке встроенных систем или всякий раз, когда требуется точная проверка байтов.
- Base64 (без заголовков): полезно, когда форматирование ограничено или требуется компактное представление.
- PKCS#12: полезно, когда открытый и закрытый ключи необходимо транспортировать вместе, защищая закрытый ключ паролем.