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

PFX/P12

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

PFX/P12 (PKCS#12) — бинарный контейнерный формат для хранения SSL/TLS-сертификата, приватного ключа и цепочки промежуточных CA в одном запароленном файле. Стандартный формат при экспорте сертификатов в Windows и IIS.

PFX и P12 — расширения файлов формата PKCS#12 (Public Key Cryptography Standards #12). Файл с расширением .pfx или .p12 содержит в одном бинарном архиве: SSL/TLS-сертификат, приватный ключ сервера и цепочку промежуточных CA. Файл защищается паролем — без него извлечь ключ невозможно.

Как работает

PKCS#12 использует бинарную кодировку ASN.1 с шифрованием содержимого 3DES или AES (в более новых версиях). При создании PFX-файла указывается пароль, которым шифруется архив. Пример создания PFX через OpenSSL из PEM-файлов:

openssl pkcs12 -export -out certificate.pfx \
    -inkey domain.key \
    -in domain.crt \
    -certfile intermediate.crt \
    -passout pass:YourPassword

Извлечение компонентов из PFX:

openssl pkcs12 -in certificate.pfx -nocerts -out private.key
openssl pkcs12 -in certificate.pfx -nokeys -out cert.crt

PFX и P12 — разные расширения одного и того же формата PKCS#12. .pfx исторически использовался в экосистеме Microsoft, .p12 — в macOS и Java-приложениях. Содержимое идентично.

История

PKCS#12 разработан RSA Security в 1990-х годах как эволюция формата PFX, созданного Microsoft. RFC 7292 стандартизировал PKCS#12 в 2014 году, заменив более ранние неофициальные версии. До RFC 7292 разные приложения трактовали формат по-разному, что вызывало проблемы совместимости.

Связь с хостингом

PFX широко используется при миграции сертификатов между серверами: Windows IIS требует именно этот формат. При переносе сертификата с Linux-сервера (формат PEM) на Windows необходимо конвертировать через OpenSSL или Certbot. Java-приложения и Tomcat используют Keystore (JKS), в который PFX импортируется через keytool. Nginx и Apache работают с PEM-форматом напрямую — PFX для них нужно предварительно распаковать.

Ключевые отличия от похожих терминов

PEM (.crt, .pem, .key) — текстовый формат base64, каждый компонент в отдельном файле. PFX/P12 — бинарный контейнер, всё в одном файле с паролем. CER/DER — бинарный формат только сертификата без ключа. JKS — Java Keystore, специфичный для JVM.

Структура PFX/P12

PFX (PKCS#12) — бинарный контейнер: приватный ключ + сертификат домена + цепочка промежуточных CA. Защищён паролем (минимум AES-256). Используется для импорта в Windows IIS, Azure, Java KeyStore, Exchange Server.

Конвертация форматов

PEM → PFX: openssl pkcs12 -export -out cert.pfx -inkey private.key -in cert.crt -certfile chain.crt. PFX → PEM: openssl pkcs12 -in cert.pfx -nodes -out cert.pem. Для Nginx и Apache нужен формат PEM. Для Microsoft IIS и Windows — PFX.

Безопасность при хранении

PFX содержит приватный ключ — хранить защищённо. Не передавать по незащищённым каналам. Хранить резервную копию вместе с паролем отдельно. Ротация ключей: при компрометации — немедленный отзыв через CA и генерация нового ключа + CSR.

PFX в cloud-сервисах

Azure: загрузка PFX в Key Vault или App Service. AWS Certificate Manager: импорт через консоль (PEM или конвертация в PEM). Google Cloud: через SSL Certificates ресурс. Kubernetes: kubectl create secret tls tls-secret --cert=tls.crt --key=tls.key — нужен PEM, не PFX.

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