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