Как я могу проверить сертификат X509 (или в формате DER) по хранилищу сертификатов Java через командную строку?
Я изучал использование утилиты keytool, но похоже, что она обрабатывает только функции импорта / экспорта / отображения (без проверки).
Обновлено: похоже, что keytool можно использовать для проверки, но только при попытке импорта. Я полагаю, что лучший способ задать этот вопрос - доступен ли более пассивный подход (например, без изменения хранилища ключей). Спасибо!




Эта страница может быть слишком упрощенной:
http://java.sun.com/docs/books/tutorial/security/toolfilex/rstep1.html
Но не похоже, что даже импорт с помощью keytool действительно проверяет сертификат. Я не вижу никакого описания проверки подписи входящего сертификата по сравнению с подписью другого доверенного сертификата.
jarsigner проверит подпись на подписанном банке, но ничего не делает для проверки подписи на сертификате, используемом для подписи баночки.
Боюсь, вам придется либо написать инструмент для проверки, либо искать коммерческий инструмент, который сделает это. Я бы подумал, что в некоторых наборах инструментов PKI будет инструмент проверки сертификата, который сделает это.
поделиться этой утилитой было бы супер круто!
Вы можете использовать keytool для export необходимых сертификатов (тех, которые находятся в цепочке для сертификата, который вам нужно проверить) из хранилища ключей Java в файлы X.509. Затем объедините их в один файл. Наконец, используйте openssl для проверки.
openssl verify -CAfile concatenated-certs.crt cert-to-verify.crt
Не идеальное решение, так как оно включает извлечение сертификатов из хранилища доверенных сертификатов, но оно должно работать с учетом того, с чего вы начинаете.
Это сработало для меня, но обратите внимание, что openssl хочет отформатированных сертификатов PEM, а не DER (это то, что keytool, похоже, использует по умолчанию)
Думаю, вы правы, что Keytool не поддерживает то, что я пытаюсь сделать. В итоге мы решили создать свою собственную утилиту, тем более что Keytool не подписан, и мы хотим иметь возможность проверить исполняемый файл перед его запуском.