Что такое формат файла PFX?
Файлы .pfx связаны со стандартом криптографии PKCS #12, первоначально разработанным RSA Laboratories и ныне регулируемым RFC 7292.
Файлы с расширением .pfx хранят зашифрованные и цифровые подписанные криптографические объекты в бинарном контейнере с кодировкой DER. Каждый файл .pfx разделен на так называемые SafeBags, которые также могут быть независимо зашифрованы и подписаны. Стандарт PKCS #12 далее разделяет SafeBags на типы, подходящие для хранения закрытых ключей, сертификатов X.509, цепочек сертификатов и других данных безопасности.
.pfx чаще всего используется для объединения закрытого ключа вместе с соответствующей ему цепочкой сертификатов в одном защищенном паролем файле. Типичные варианты использования включают экспорт сертификатов TLS/SSL между серверами, распространение идентификаторов для подписи кода и передачу учетных данных S/MIME между устройствами.
.pfx и .p12 функционально идентичны - инструменты Windows используют расширение .pfx, в то время как macOS и Linux предпочитают .p12. Оба формата могут быть преобразованы в текстовый формат .pem с помощью команды openssl pkcs12. В отличие от отдельных сертификатов .cer, файл .pfx несет закрытый ключ вместе с сертификатом, что делает его предпочтительным форматом, когда ключ должен передаваться вместе с сертификатом.
Безопасность и защита
РИСК: HIGHФайл PFX содержит ЗАКРЫТЫЙ КЛЮЧ, поэтому это один из самых конфиденциальных типов файлов: любой, у кого есть файл и пароль к нему, может выдавать себя за владельца сертификата - подписывать код или документы от его имени или развернуть сервер с его TLS-идентификатором. Никогда не пересылайте PFX без защиты, не фиксируйте его в системах контроля версий, используйте сложный пароль для экспорта и храните его в безопасности (в идеале удалите файл после импорта). Относитесь к неожиданным вложениям .pfx как к подозрительным. Создавайте и обрабатывайте файлы PFX только с помощью доверенных инструментов (мастера ОС, OpenSSL), а не на случайных сайтах «просмотра сертификатов», которые могут похитить ваш ключ и пароль.
Детали формата
в двух словахПрограммы, открывающие файлы PFX
Технические подробности
глубокая спецификация| Кодировка контейнера | Бинарная DER (Distinguished Encoding Rules) поверх ASN.1; файл не читается человеком без специального парсера |
| MIME-тип | application/x-pkcs12 |
| Магические байты | 30 82 со смещением 0 (ASN.1 DER SEQUENCE с 2-байтовой длиной); общие с другими форматами в кодировке DER - идентифицируйте по расширению или MIME-типу, а не только по байтам |
| Внутренняя структура | Вложенные слои: PFX → AuthenticatedSafe → SafeContents → SafeBags; каждый SafeBag содержит один типизированный криптографический объект |
| Типы SafeBag | KeyBag, PKCS8ShroudedKeyBag, CertBag, CRLBag, SecretBag, SafeContents - шесть официальных типов SafeBag, определенных в RFC 7292 |
| Защита паролем | Весь архив и отдельные SafeBags могут быть зашифрованы независимо с помощью выбранной пользователем парольной фразы через шифрование на основе пароля |
| Алгоритмы шифрования | AES-256-CBC и 3DES-CBC для современных систем; RC2 и RC4 встречаются в устаревших файлах (не рекомендуется использовать при создании новых архивов) |
| Целостность MAC | HMAC (SHA-1 в устаревших; SHA-256 или SHA-384 в современных реализациях) охватывает структуру AuthenticatedSafe для обнаружения подделки |
| Производная ключа | PBKDF1 (RFC 7292, приложение B) или PBKDF2 с настраиваемым количеством итераций усиливает шифрование на основе пароля против атак методом перебора |
| Название Windows против IETF | .pfx - это оригинальный суффикс, придуманный Microsoft; .p12 - стандартное название IETF; они побайтово идентичны и полностью взаимозаменяемы |
| Хранение нескольких объектов | Один .pfx может содержать несколько сертификатов и ключей - например, полную цепочку из конечного, промежуточного и корневого сертификатов CA плюс закрытый ключ |
| Обычная конвертация через CLI | openssl pkcs12 -in file.pfx -out file.pem -nodes извлекает данные в текстовый PEM; openssl pkcs12 -export -out file.pfx собирает входные данные PEM в новый архив |
| Поддержка платформ | Нативная поддержка в Windows (Мастер импорта сертификатов, certutil, PowerShell), macOS (Связка ключей), iOS, Android, Java (keytool) и большинстве библиотек TLS |
| Типичные сценарии использования | Развертывание серверных сертификатов TLS/SSL, идентификаторы подписи кода, ключи электронной почты S/MIME, учетные данные клиента VPN и подготовка смарт-карт |
| Выпущен | PKCS #12 v1.0 published 1999 by RSA; Microsoft .pfx predates and feeds into it |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.rfc-editor.org |