Получить полную цепочку сертификатов из хранилища доверенных сертификатов Java с учетом сертификата RootCA или дочернего сертификата в качестве входных данных.

У меня есть хранилище доверенных сертификатов Java foo.p12, которое содержит несколько общедоступных сертификатов, таких как сертификаты RootCA, сертификаты Intermediate RootCA, подписанные его RootCA, сертификаты сервера конечных объектов, выданные Intermediate RootCA (например, foo.p12 содержит RootCA_1, IntermediateCA_1, EndEntity_1, RootCA_2, IntermediateCA_2, EndEntity_2).

У меня есть требование, учитывая rootca_1 или EndEntity_1 в качестве входных данных, мне нужно прочитать foo.p12 и получить всю цепочку сертификатов, соответствующую rootca_1 или EndEntity_1.

Я проверил эту ссылку с похожим вопросом, но ответы не обновляются, а также не дайте решение моей проблемы. Есть еще одна ссылка , но это снова возвращает все сертификаты в foo.p12, но не цепочки сертификатов, как мне нужно.

Существуют ли какие-либо решения Java (API JCE или API Bouncy Castle и т. д.), которые могли бы вернуть цепочку сертификатов с учетом сертификата rootCA или конечного объекта?


person Arun kumar R    schedule 27.04.2020    source источник
comment
Почему? Хранилища доверия не содержат цепочек, они просто содержат отдельные сертификаты, и ваше требование начинать с данного корня может привести к дереву, а не к одной цепочке. Человек, который предоставляет вам конечный сертификат, должен предоставить достаточную цепочку для достижения корня, который находится в вашем хранилище доверенных сертификатов. Не наоборот. Что-то здесь серьезно не так.   -  person user207421    schedule 27.04.2020
comment
Да, мое хранилище доверенных сертификатов содержит только отдельные общедоступные сертификаты. Теперь для данного rootCA_1 мне нужно найти эту древовидную структуру и получить это конкретное дерево. Я могу построить свою собственную логику для циклического просмотра каждой записи сертификата в хранилище доверенных сертификатов, чтобы идентифицировать и построить эту древовидную структуру. Но прежде чем сделать это, я хочу проверить и использовать любой Java API/утилиту, которая уже обеспечивает такую ​​реализацию. Учитывая ввод RootCA, я хочу идентифицировать и получить только связанные с ним дочерние сертификаты, используя существующие Java API (если есть)   -  person Arun kumar R    schedule 27.04.2020
comment
Это необычное требование, поэтому, естественно, в Java SE нет ничего для этого. Вам придется написать свой собственный код. Обычно хранилище доверенных сертификатов содержит только корневые сертификаты, а не промежуточные или конечные сертификаты. Весь смысл этой модели в том, что вам нужно доверять только одному или нескольким корневым сертификатам. Если вы напрямую доверяете промежуточному сертификату, нет смысла доверять его сертификатам-предкам. Таким образом, если вы доверяете сертификату конечного объекта, нет смысла доверять любому другому сертификату.   -  person President James K. Polk    schedule 27.04.2020