Можем ли мы организовать каждую цепочку сертификатов с несколькими дочерними элементами в структуру логических папок в Java trustStore - PullRequest
0 голосов
/ 20 апреля 2020

Предположим, для SSL / TLS у меня есть 2 CA1 и CA2 rootCA (оба являются самозаверяющими), и каждый ЦС подписал и выдал 5 сертификатов конечных объектов каждый. У меня есть требование хранить каждый rootCA и соответствующие ему 5 дочерних сертификатов publi c в Java trustStore в некоторой структуре логической папки, так что с учетом сертификата или псевдонима родительского CA publi c я хотел бы получить все соответствующие дочерние сертификаты. выданные сертификаты. Например, учитывая псевдоним CA1, я хочу получить CA1 и только дочерние сертификаты, выданные CA1, и то же самое относится к CA2.

Я проверил Java java .security.KeyStore , который предоставляет API для хранения цепочки сертификатов, но принимает только цепочку доверия, где один родитель и только один ребенок может быть добавлен в склад доверенных сертификатов. Мы не можем добавить несколько дочерних сертификатов на одном уровне к этому родителю. Утилита keytool также не обеспечивает решение моего требования.

Есть ли способ сохранить родительский сертификат для нескольких дочерних в структуре логических папок в хранилищах доверия, где я могу получить все дочерние элементы, относящиеся к определенному псевдониму родителей?

1 Ответ

0 голосов
/ 22 апреля 2020

Вы не можете хранить сертификаты в логическом порядке в java хранилище ключей. java хранилище ключей - это, в основном, хранилище значений ключей (псевдоним и запись). Запись может быть сертификатом или секретным ключом или парой ключей (личный ключ и соответствующая цепочка сертификатов, которая включает в себя publi c key).

Вам необходимо написать собственный настраиваемый логик c для достижения ваши требования. Вы можете определить, подписан ли сертификат данным ЦС или нет, посмотрев атрибуты сертификата IssueDNER и subjectDN . Если сертификат является самоподписанным (например, сертификат CA), issuerDN и subjectDN будут одинаковыми. Если сертификат был подписан ЦС, то имя субъекта ЦС помещается в идентификатор эмитента подписанного сертификата. Таким образом, вы можете определить иерархию цепочки сертификатов. Однако, если вы используете этот подход, вам придется l oop через все сертификаты несколько раз в вашем хранилище доверенных сертификатов.

Я не уверен, каков ваш вариант использования, но если вам нужно использовать хранилище доверенных сертификатов для соединения SSL с сервером, тогда лучше всего, если вы сохранили все сертификаты в одном хранилище доверенных сертификатов и не заботитесь о логическом порядке, а просто передаете хранилище доверенных сертификатов в JVM, и он выполнит магические операции c определение правильного сертификата для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...