JEP 229: Create PKCS12 Keystores by Default
Создание хранилищ ключей PKCS12 по умолчанию
| Ответственный | Vincent Ryan |
| Тип | Feature |
| Область | SE |
| Статус | Closed / Delivered |
| Выпуск | 9 |
| Компонент | security-libs / java.security |
| Обсуждение | security dash dev at openjdk dot java dot net |
| Трудоёмкость | M |
| Длительность | M |
| Рецензенты | Brian Goetz, Sean Mullan |
| Одобрен | Brian Goetz |
| Создан | 2014/05/30 16:28 |
| Обновлён | 2018/01/11 15:34 |
| Задача | 8044445 |
Аннотация
Сменить тип хранилища ключей по умолчанию с JKS на PKCS12.
Цели
-
Повысить безопасность. PKCS12 предлагает более стойкие криптографические алгоритмы, чем JKS.
-
Сохранить прямую и обратную совместимость. Приложения, работающие с хранилищами ключей JKS и PKCS12, должны продолжать работать в разных выпусках JDK.
Мотивация
JKS — собственный тип хранилища ключей, специфичный для JDK. Он является типом хранилища ключей по умолчанию для платформы Java начиная с JDK 1.2. Хранилища ключей JKS могут хранить только закрытые ключи и доверенные сертификаты открытых ключей и основаны на проприетарном формате, который непросто расширить для новых криптографических алгоритмов.
PKCS12 — расширяемый, стандартный и широко поддерживаемый формат для хранения криптографических ключей. Начиная с JDK 8 хранилища ключей PKCS12 могут хранить закрытые ключи, доверенные сертификаты открытых ключей и секретные ключи. Переход на PKCS12 повышает целостность и конфиденциальность хранилища ключей. Он также открывает возможности для взаимодействия с другими системами, которые тоже поддерживают PKCS12.
Описание
Эта возможность меняет тип хранилища ключей по умолчанию с JKS на PKCS12. По умолчанию новые хранилища ключей будут создаваться в формате PKCS12. Существующие хранилища ключей не изменятся, а приложения, работающие с хранилищами ключей, по-прежнему могут явно указывать нужный им тип хранилища.
Работа существующих приложений не должна нарушиться. Хранилища ключей, как правило, используются долго, поэтому нам нужно поддерживать доступ к ним в нескольких выпусках JDK. Приложения, работающие с хранилищами ключей, созданными в более ранних выпусках JDK, должны без изменений работать на JDK 9. Аналогично приложения, работающие с хранилищами ключей, созданными в JDK 9, должны без изменений работать в более ранних выпусках JDK.
Это требование выполняется за счёт механизма определения типа хранилища ключей, который понимает оба формата: JKS и PKCS12. Перед загрузкой хранилища ключей его формат анализируется, чтобы определить тип, а затем для доступа к нему используется подходящая реализация хранилища ключей. Механизм включён по умолчанию, но при необходимости его можно отключить.
Поддержка этого механизма определения типа хранилища ключей может быть перенесена в более ранние выпуски JDK.
Тестирование
Требуется обширное тестирование в разных выпусках JDK, чтобы убедиться, что совместимость для приложений, работающих с хранилищами ключей, сохраняется.