hostprofi.ru
Подобрать хостинг
Термин·буква P

PEM

краткое определение

PEM (Privacy Enhanced Mail) — формат кодирования криптографических объектов (сертификатов, ключей, CSR) в base64 ASCII с заголовками BEGIN/END. Стандартный формат файлов для SSL/TLS на Linux-серверах.

PEM (Privacy Enhanced Mail) — текстовый формат кодирования криптографических данных: ключей, сертификатов, цепочек сертификатов. Несмотря на название, с электронной почтой сегодня почти не связан — применяется как стандартный контейнер для хранения и передачи TLS-сертификатов и ключей на серверах.

Как устроен PEM-формат

PEM-файл — ASCII-текст с заголовком, содержимым в Base64 и нижним колонтитулом:

-----BEGIN CERTIFICATE-----
MIIBxTCCAW+gAwIBAgIJAP...
-----END CERTIFICATE-----

Содержимое между маркерами — бинарные данные DER (Distinguished Encoding Rules, ASN.1), закодированные в Base64. Типы маркеров: CERTIFICATE — сертификат X.509; CERTIFICATE REQUEST — CSR; PRIVATE KEY — PKCS#8 приватный ключ; RSA PRIVATE KEY — RSA-ключ в PKCS#1; EC PRIVATE KEY — ECC-ключ. Несколько сертификатов объединяются в один файл «цепочкой»: сертификат сайта + промежуточный CA + (опционально) корневой CA.

Nginx принимает bundle в директиве ssl_certificate /etc/ssl/fullchain.pem. Apache использует отдельные директивы: SSLCertificateFile (сертификат сайта) и SSLCertificateChainFile (промежуточные CA). Let's Encrypt через Certbot сохраняет файлы в /etc/letsencrypt/live/domain/: cert.pem (сертификат), chain.pem (цепочка CA), fullchain.pem (сертификат + цепочка), privkey.pem (приватный ключ).

PEM и смежные форматы

DER (.der, .cer)
Бинарный аналог PEM — те же данные ASN.1, но без Base64. Используется в Windows и некоторых Java-приложениях. Конвертация: openssl x509 -inform DER -in cert.der -out cert.pem.
PKCS#12 (.p12, .pfx)
Бинарный контейнер, объединяющий сертификат и приватный ключ с паролем. Используется в Windows/IIS и iOS-профилях. Конвертация из PEM: openssl pkcs12 -export -in cert.pem -inkey key.pem -out bundle.p12.
PKCS#7 (.p7b, .p7c)
Контейнер только для сертификатов (без ключа). Используется в Windows для импорта цепочек. Может быть Base64 или DER.
CRT / CER
Расширения без строгого формата — могут содержать PEM или DER в зависимости от системы.

История

PEM разработан в рамках стандарта Privacy Enhanced Mail (RFC 1421–1424, 1993) для защиты электронной почты в ARPANET. Сам стандарт почтового шифрования не получил широкого распространения (его заменил S/MIME), но текстовый формат контейнера оказался удобным и был принят для TLS-сертификатов. DER как бинарный формат ASN.1 стандартизирован в ITU-T X.690. OpenSSL использует PEM как основной формат с ранних версий 1998 года.

Практическое использование PEM

Конвертация через OpenSSL: DER → PEM: openssl x509 -inform DER -in cert.der -out cert.pem; PEM → PKCS#12: openssl pkcs12 -export -in cert.pem -inkey key.pem -out bundle.p12; PKCS#12 → PEM: openssl pkcs12 -in bundle.p12 -nodes -out all.pem. Проверить содержимое: openssl x509 -in cert.pem -text -noout — выводит Subject, Issuer, сроки, SAN, алгоритм. Проверить соответствие сертификата и ключа: openssl x509 -modulus -in cert.pem | md5sum и openssl rsa -modulus -in key.pem | md5sum — хэши должны совпасть.

На что обращать внимание

Права доступа к файлу приватного ключа: chmod 600 privkey.pem — только владелец. Веб-сервер (Nginx, Apache) должен запускаться от имени пользователя с доступом к ключу. Не храните приватные ключи в публичных git-репозиториях — даже удалённый коммит остаётся в истории. Инструменты сканирования (truffleHog, GitLeaks) обнаруживают утечки ключей в репозиториях. Для VDS с Let's Encrypt проверяйте, что cron-задача или systemd-timer обновляет сертификат до истечения 90-дневного срока. Certbot автоматически обновляет при сроке менее 30 дней: certbot renew --quiet.

Другие термины

PEM — что это, определение и как работает | Справочник — hostprofi.ru