Рубрики
Без рубрики

Что такое PKCS12?

Всякий раз, когда мы говорим о безопасной связи по сетям, такие ключевые слова, как “SSL”, “Хранилища ключей”,… Помеченный ssl, pkcs12, java, jks.

Всякий раз, когда мы говорим о безопасной связи по сетям, часто всплывают такие ключевые слова, как “SSL”, “Хранилища ключей”, “JKS”. Обычно хранилища ключей и хранилища доверия используются, когда нашим приложениям необходимо безопасно обмениваться данными по протоколу SSL/TLS. Для получения более подробной информации о том, как работает связь по протоколу SSL, следите за блогом, упомянутым ниже.

SSL-сертификаты

Эти хранилища ключей и хранилища доверия представляют собой защищенные паролем файлы, которые находятся в той же файловой системе, что и приложение. По умолчанию и наиболее широко используемым форматом для этих файлов является JKS (хранилище ключей Java). По крайней мере, так было до Java 8.

В Java 9 формат хранилища ключей по умолчанию был изменен с JKS на PKCS12. Наиболее примечательное различие между JKS и PKCS12 заключается в том, что в то время как JKS был форматом, специфичным для Java, PKCS12 представляет собой стандартизированный и нейтральный к языку способ хранения зашифрованных закрытых ключей и сертификатов. Вот выдержка из официального определения –

“PKCS12 (Стандарты криптографии с открытым ключом) определяет формат архивного файла для хранения сертификатов сервера, промежуточного сертификата, если таковой имеется, и закрытого ключа в одном зашифрованном файле”

Так почему же Java 9 сделала PKCS12 по умолчанию?

  • Могут храниться секретные ключи, закрытые ключи и сертификаты
  • PKCS12 – это стандартный формат, он может быть прочитан другими программами и библиотеками, в то время как JKS специфичен для java.
  • Улучшенная безопасность: JKS довольно небезопасен. Это видно по количеству инструментов для перебора паролей этого типа хранилища ключей, особенно популярных среди разработчиков Android [1].

Если вы работаете на Java, то хранилище ключей Java – довольно естественное место для хранения закрытых ключей. Приложения Java обычно ожидают получения необходимых им ключей от JKS, и к ним легко получить доступ из ваших собственных приложений Java. Однако JKS недоступен извне Java. С другой стороны, файлы PKCS12 (они же PFX) не зависят от языка, более безопасны и существуют достаточно долго, чтобы их поддерживали практически везде. Если вы хотите преобразовать хранилище ключей JKS (.jks) в хранилище ключей PKCS12 (.p12), вы можете сделать это, выполнив следующую команду.

keytool -importkeystore -srckeystore [MY_KEYSTORE.jks] -destkeystore [MY_FILE.p12] -srcstoretype JKS – deststoretype PKCS12 -deststorepass [ПАРОЛЬ_PKCS12]

  • [MY_KEYSTORE.jks] : Путь к хранилищу ключей, которое вы хотите преобразовать.
  • [MY_FILE.p12] : путь к файлу PKCS12 (с расширением .p12 или .pfx), который будет создан.
  • [ПАРОЛЬ_PKCS12] : Пароль, который будет запрошен при открытии файла PKCS12.

В конце концов, решение о том, какой тип хранилища ключей использовать, должно основываться на том, как вы планируете использовать закрытый ключ, то есть: какие приложения должны будут использовать закрытый ключ и какой формат (ы) хранилища ключей они уже обрабатывают. PKCS12 – это более гибкий и безопасный вариант. Спасибо, что дочитали до конца, если у вас есть какие-либо вопросы по этому поводу, не стесняйтесь упоминать их в комментариях.

[1] – https://www.ndss-symposium.org/wp-content/uploads/2018/02/ndss2018_02B-1_Focardi_paper.pdf

Оригинал: “https://dev.to/manukam/pkcs12-b2m”