PKCS 12
Правильное название этой статьи — PKCS # 12 . Отсутствие символа # связано с техническими ограничениями .
приложение / x-pkcs12
PKCS # 12 v1.1
(27 октября 2012 г . ; 8 лет назад ) ( 2012-10-27 )
- 1 Связь с форматом файла PFX
- 2 Нормальное использование
- 3 ссылки
- 4 Внешние ссылки
Связь с форматом файла PFX [ править ]
PKCS # 12 является преемником Microsoft «PFX»; [5] однако термины «файл PKCS # 12» и «файл PFX» иногда используются как синонимы. [3] [4] [6]
Формат PFX подвергся критике за то, что он является одним из самых сложных криптографических протоколов. [6]
Нормальное использование [ править ]
Полный стандарт PKCS # 12 очень сложен. Это позволяет создавать сегменты сложных объектов, таких как структуры PKCS # 8 , глубоко вложенные. Но на практике он обычно используется для хранения только одного закрытого ключа и связанной с ним цепочки сертификатов.
Файлы PKCS # 12 обычно создаются с использованием OpenSSL , который поддерживает только один закрытый ключ из интерфейса командной строки. Java keytool можно использовать для создания нескольких «записей», начиная с Java 8, но это может быть несовместимо со многими другими системами. Начиная с Java 9, PKCS # 12 является форматом хранилища ключей по умолчанию. [7] [8]
Более простой альтернативный формат для PKCS # 12 — это PEM, который просто перечисляет сертификаты и, возможно, закрытые ключи в виде строк Base 64 в текстовом файле.
GnuTLS «s certtool также может быть использован для создания PKCS # 12 файлов , включая сертификаты, ключи и сертификаты CA через —to-pk12 . Однако имейте в виду, что для взаимозаменяемости с другим программным обеспечением, если источники находятся в тексте PEM Base64, следует также использовать —outder .
Ссылки [ править ]
- ^ «PKCS # 12: Стандарт синтаксиса обмена личной информацией» . RSA Laboratories . Архивировано из оригинала на 2017-04-17. Этот стандарт определяет переносимый формат для хранения или транспортировки личных ключей пользователя, сертификатов, различных секретов и т. Д.
- ^ «PKCS 12 v1.0: Синтаксис обмена личной информацией» (PDF) . RSA Laboratories. 1999-06-24 . Проверено 16 января 2020 .
- ^ a b Мишель И. Галлант (март 2004 г.). «Типы файлов PKCS # 12: переносимые защищенные ключи в .NET» . Корпорация Microsoft . Проверено 14 марта 2013 . Все операционные системы Windows определяют расширения .pfx и .p12 как типы файлов для обмена личной информацией или PKCS # 12.
- ^ a b «openssl-cmds: pkcs12» . OpenSSL Project. 2019 . Проверено 16 января 2020 . Команда pkcs12 позволяет создавать и анализировать файлы PKCS # 12 (иногда называемые файлами PFX).
- ↑ Питер Гутманн (август 2002 г.). «Уроки, извлеченные при внедрении и развертывании криптографического программного обеспечения» (PDF) . Ассоциация USENIX . Проверено 16 января 2020 . В 1996 году Microsoft представила новый формат хранения [. ] под названием PFX (Personal Information Exchange), [. ] он был позже переиздан в очищенном виде как PKCS # 12.
- ^ a b Питер Гутманн (1998-03-12). «PFX — Как не разрабатывать криптопротокол / стандарт» . Проверено 16 января 2020 .
- ^ «JEP 229: Создать хранилища ключей PKCS12 по умолчанию» . OpenJDK JEP . Корпорация Oracle . 2014-05-30.
- ^ Райан, Винсент (2014-05-30). «Ошибка JDK-8044445: создание хранилищ ключей PKCS12 по умолчанию» . Система ошибок JDK .
Внешние ссылки [ править ]
- RFC 7292 — PKCS # 12: синтаксис обмена личной информацией v1.1
- «PKCS # 12: Стандарт синтаксиса обмена личной информацией» . RSA Laboratories . Архивировано из оригинала на 2017-04-17. Этот стандарт определяет переносимый формат для хранения или транспортировки личных ключей пользователя, сертификатов, различных секретов и т. Д.
- Обзор возможностей PKCS # 12, использования, реализаций, истории и будущего: Райан Херст и Юрий Строжевский (2015-12-02). «Стандарт PKCS # 12 нуждается в другом обновлении» . Архивировано 03 марта 2017 года.
- PKCS # 1
- PKCS # 2
- PKCS # 3
- PKCS # 4
- PKCS # 5
- PKCS # 6
- PKCS # 7
- PKCS # 8
- PKCS # 9
- PKCS # 10
- PKCS # 11
- PKCS # 12
- PKCS # 13
- PKCS # 14
- PKCS # 15
- История криптографии
- Краткое описание криптографии
- Криптографический протокол
- Протокол аутентификации
- Криптографическая хеш-функция
- Ключевая деривационная функция
- Криптографически безопасный генератор псевдослучайных чисел (CSPRNG)
- Криптографическая хеш-функция
- Блочный шифр
- Потоковый шифр
- Алгоритм с симметричным ключом
- Криптография с открытым ключом
- Квантовое распределение ключей
- Квантовая криптография
- Постквантовая криптография
- Код аутентификации сообщения
- Случайные числа
- Стеганография
- Категория
Эта статья о криптографии незавершена . Вы можете помочь Википедии, расширив ее .
PKCS12
Из-за технических ограничений желаемая типографика заголовка не могла быть правильно отображена.
В криптографии , PKCS # 12 является одним из стандартов этих Государственно-Key стандартов криптографии семьи (PKCS) или открытых ключей стандартов криптографии , опубликованные RSA Laboratories . Она определяет размер из файла обычно используется для хранения закрытых ключей X.509 сопроводительных открытых ключей сертификатов , защищенных симметричным паролем , и является преемником формата PFX Microsoft .
Формат PKCS # 12 используется для хранения закрытых ключей и сертификатов в одном зашифрованном файле: например, Java использует его для своих хранилищ ключей .
Файл расширение для PKCS # 12 файлов, как правило , ».p12″ . Эти файлы могут быть созданы, проанализированы и читать, например , с PKCS12 подкомандой из OpenSSL .
Резюме
- 1 Использование сертификата PKCS # 12 в браузере
- 2 См. Также
- 2.1 Связанные статьи
- 2.2 Внешние ссылки
Использование сертификата PKCS # 12 в браузере
В веб — браузере , вы можете импортировать сертификат в PKCS # 12, цель состоит в том, чтобы сделать HTTPS с аутентификацией на клиента .
Смотрите также
Статьи по Теме
Внешние ссылки
- Руководство по командам OpenSSL pkcs12
- (ru) PKCS # 12: Стандарт синтаксиса обмена личной информацией , RSA Laboratories
- (ru) PFX — Как не разрабатывать криптопротокол / стандарт , Питер Гутманн
Загрузить PKCS12-файл для создания HTTPS-слушателя
Управление секретами — это раздел, куда можно загрузить PKCS12-файлы (в системе называются секретами). Они нужны для создания балансировщиков нагрузки с HTTPS-слушателями.

Что такое PKCS12-файл
PKCS12 (Public-Key Cryptography Standards) — это двоичный формат для хранения SSL/TLS-сертификата, цепочки сертификатов и закрытого ключа в одном зашифрованном файле.
По сути, в файл формата PKCS12 вы «складываете» основной SSL/TLS-сертификат, цепочку сертификатов и закрытый ключ, чтобы их было удобно передать. Каждый элемент важен для создания HTTPS-соединения:
- Основной сертификат — это цифровая подпись сайта, которая подтверждает, что ресурс на самом деле принадлежит вам, а не мошенникам, которые выдают себя за вас.
- Цепочка сертификатов — это информация о CA (certificate authority — удостоверяющих центрах), которые участвовали в выпуске вашего сертификата и подтверждают его подлинность.
- Закрытый ключ — это уникальный набор букв и цифр (ключ), им криптографический алгоритм будет шифровать все данные, которыми ресурс обменивается с пользователем.
Получив PKCS12-файл, наша система сможет открыть HTTPS-соединение. Вам нужно только упаковать связанные с сертификатом файлы в формат PKCS12 в кодировке base64 (эту кодировку понимает система) и загрузить в раздел Управление секретами.
Как создать PKCS12-файл
1. Подготовьте файлы сертификата
Вам понадобятся основной SSL/TLS-сертификат для домена, цепочка сертификатов и закрытый ключ. Для домена должна быть настроена DNS A-запись с виртуальным IP-адресом балансировщика нагрузки (IP указан в разделе Сеть Балансировщики нагрузки). Ваш домен будет направлять запросы на IP балансировщика, а тот распределит их между машинами.
CA не всегда присылает клиенту цепочку сертификатов вместе с основным сертификатом — иногда отправляет только основной, потому что зачастую браузерам достаточно его для подтверждения доменного имени. В этом случае вы можете получить цепочку сертификатов сами:
1. С качайте корневой и промежуточный сертификаты на сайте CA, который выдал вам сертификат.
2. Создайте файл в любом текстовом редакторе.
3. В созданный файл поместите содержимое сертификатов в последовательности: корневой сертификат, затем сертификаты посредников по порядку, в конце сертификат для домена. Вот так:
- содержимое корневого сертификата (например, «CARoot.crt»);
- содержимое сертификата посредника №1 (например, «Intermediate1.crt»);
- содержимое сертификата посредника №2 (например, «Intermediate2.crt»);
- содержимое сертификата для домена (например, «domain.crt»).
2. Объедините файлы сертификата в PKCS12
Теперь у вас на руках все нужные файлы. Объединить их в формат PKCS12 можно разными способами. Ниже описываем частый кейс — создание PKCS12 из PEM-файлов:
1. Установите OpenSSL. Это библиотека, содержащая инструменты для работы с SSL/TLS протоколами. Ссылки для установки и инструкции по работе с OpenSSL можно найти на официальном сайте .
2. Проверьте, соответствуют ли ваши файлы сертификата формату PEM. Такие файлы должны иметь расширение .pem, .crt, .cer либо .key, начинаться со строки «—— BEGIN CERTIFICATE ——» и заканчиваться строкой «—— END CERTIFICATE ——». Чтобы увидеть начало и конец файла, откройте его в текстовом редакторе.
3. Если какие-то файлы не в PEM, преобразуйте их с помощью OpenSSL. Введите в OpenSSL нужную команду, указав вместо текста в квадратных скобках свои названия:
Для файла .crt, .cer или .der
openssl x509 -inform der -in [название вашего файла, включая расширение]-out [название для создаваемого PEM-файла].pem
Если ваш файл называется «example.der» и новому PEM-файлу вы хотите дать имя «PEMcertificate», то команда будет такой: openssl x509 -inform der -in example.der -out PEMcertificate.pem
Для файла .p7b или .p7c
openssl pkcs7 -print_certs -in [название вашего файла, включая расширение] -out [название для создаваемого PEM-файла].cer
Если ваш файл называется «example.pb7» и новому PEM-файлу вы хотите дать имя «PEMcertificate», то команда будет такой: openssl pkcs7 -print_certs -in example.pb7 -out PEMcertificate.cer
4. Поместите основной сертификат, ключ и цепочку промежуточных сертификатов (всего три файла в формате PEM) в текущую директорию.
5. Чтобы объединить файлы в PKCS12, откройте OpenSSL и введите команду:
openssl pkcs12 -export -inkey [название файла с закрытым ключом, включая расширение] -in [название файла с сертификатом, включая расширение] -certfile [название файла с цепочкой сертификатов, включая расширение] -passout pass: -out [ваше название для создаваемого файла].p12
Если ваши файлы — «server.crt» (основной сертификат), «server.key» (закрытый ключ) и «ca-chain.crt» (цепочка сертификатов), а новый PKCS12-файл вы хотите назвать «server», то команда будет такой: openssl pkcs12 -export -inkey server.key -in server.crt -certfile ca-chain.crt -passout pass: -out server.p12
В результате вы объедините ключ, сертификат и промежуточную цепочку сертификатов в один файл PKCS12.
3. Закодируйте результат в base64
Закодируйте содержимое PKCS12-файла в base64. Это можно сделать, введя в консоли нужную команду:
certutil.exe -encode [полный путь к PKCS12-файлу] [название нового файла].b64
Если путь к вашему файлу — «C:\Users\Myname\server.p12» и вы хотите назвать новый файл «code64», то команда будет такой: certutil.exe -encode C:\Users\Myname\server.p12 code64.b64
Будет создан новый файл в кодировке base64. Откройте его в текстовом редакторе и удалите первую и последнюю строчки: «——BEGIN CERTIFICATE——» и «——END CERTIFICATE——». Они генерируются автоматически и не нужны вам. Оставшийся текст и будет содержанием секрета.
openssl base64 -in [полный путь к PKCS12-файлу] -out [название нового файла].txt
Если путь к вашему файлу — «Users/admin/Downloads/ server.p12» и вы хотите назвать новый файл «code64», то команда будет такой: openssl base64 -in Users/admin/Downloads/ server.p12 -out code64.txt
Будет создан новый файл .txt с содержанием PKCS12-файла, закодированным в base64. Это и есть содержание секрета.
Для Linux (выполняется в директории, где лежит PKCS-12 файл)
base64 [название PKCS12-файла] > [название нового файла]
Если ваш файл называется «server.p12» и вы хотите назвать новый файл «code64», то команда будет такой: base64 server.p12 > code64
Будет создан новый файл code64 с содержанием PKCS12-файла, закодированным в base64. Это и есть содержание секрета. Файл можно открыть с помощью команды nano code64.
Как создать балансировщик нагрузки с HTTPS-слушателем
1. Добавьте содержимое файла PKCS12 в base64 кодировке в качестве секрета. Для этого перейдите в раздел Управление секретами и нажмите Создать секрет. В появившемся окне задайте имя секрета, активируйте настройку Загрузить как PKCS12 файл, вставьте содержимое секрета в поле «Содержимое» и нажмите Сохранить.

2. При создании или редактировании балансировщика нагрузки нажмите Добавить слушатель. В открывшемся окне введите имя нового слушателя, выберите протокол Terminated HTTPS, укажите нужный секрет внизу и нажмите Создать слушатель.

3. Слушатель будет создан.
Создание сертификатов PKCS12
Данная статья содержит краткое руководство для создания сертификатов PKCS12.
Такие сертификаты используются в качестве ключей на защищённых веб-страницах и в электронной подписи OpenOffice.org.
Для того, чтобы создать сертификат, вам необходимо программное обеспечение openssl (если нет команды openssl, установите посредством команды apt-get install openssl).
- 1 Создание сертификатов PKCS12
- 1.1 Шаг 1. Подготавливаем место
- 1.2 Шаг 2. Создаём сертификат сертифицирующей организации (CA)
- 1.3 Шаг 3. Создаём пользовательский сертификат
Шаг 1. Подготавливаем место
Создайте каталог (например, cert) и перейдите в него. Выполните команды:
mkdir private mkdir certs echo '100001' >serial touch certindex.txt
В этом каталоге создаём файл конфигурации openssl.conf следующего содержимого:
# # OpenSSL configuration file. # # Establish working directory. dir = . [ ca ] default_ca = CA_default [ CA_default ] serial = $dir/serial database = $dir/certindex.txt new_certs_dir = $dir/certs certificate = $dir/cacert.pem private_key = $dir/private/cakey.pem default_days = 365 default_md = sha256 preserve = no email_in_dn = yes # установите в no если не хотите чтобы поле email присутствовало в сертификате, # без поля email сертификат нельзя использовать для подписи и шифрования электронной почты! nameopt = default_ca certopt = default_ca policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 # Size of keys default_keyfile = key.pem # name of generated keys default_md = sha256 # message digest algorithm string_mask = nombstr # permitted characters distinguished_name = req_distinguished_name req_extensions = v3_req [ req_distinguished_name ] # Variable name Prompt string #------------------------- ---------------------------------- 0.organizationName = Organization Name (company) organizationalUnitName = Organizational Unit Name (department, division) emailAddress = Email Address emailAddress_max = 40 localityName = Locality Name (city, district) stateOrProvinceName = State or Province Name (full name) countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 commonName = Common Name (hostname, IP, or your name) commonName_max = 64 # Default values for the above, for consistency and less typing. # Variable name Value #------------------------ ------------------------------ 0.organizationName_default = Company localityName_default = Moscow stateOrProvinceName_default = Moscow countryName_default = RU emailAddress_default = email@domain.ru commonName_default = Common text [ v3_ca ] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [ v3_req ] basicConstraints = CA:FALSE subjectKeyIdentifier = hash
Шаг 2. Создаём сертификат сертифицирующей организации (CA)
openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 365 -config ./openssl.conf
При запросе пароля указывайте пароль не менее 4 символов. На все остальные запросы можно нажать Enter.
Шаг 3. Создаём пользовательский сертификат
Сначала зададим имя для файлов сертификата пользователя. Так как их может быть много, задание через переменную среды окружения позволит повторять этот шаг очень быстро для каждого пользователя.
name='user1'
Теперь для каждого пользователя создаём сертификат PKCS12. Выполняйте по одной команде:
openssl req -new -nodes -out $name-req.pem -keyout private/$name-key.pem -days 365 -config ./openssl.conf
openssl ca -out $name-cert.pem -days 365 -config ./openssl.conf -infiles $name-req.pem
openssl pkcs12 -export -in $name-cert.pem -inkey private/$name-key.pem -certfile cacert.pem -name "description" -out $name-cert.p12
При запросе пароля указывайте пароль, заданный при создании сертификата CA. На все остальные запросы можно нажать Enter.
Готовый файл: user1-cert.p12
Этот файл можно импортировать в Firefox или Thunderbird, а потом использовать в OpenOffice.org.
См. также
Используемая литература