6

Я работаю с сертификатами X509 на Java. Учитывая сертификат, можно ли найти все другие сертификаты в иерархии подписи до получения корневого сертификата?Получение цепочки сертификатов

У меня есть файл сертификата (с расширением .cer), и я хочу извлечь родительский сертификат подписи. Я хочу продолжать находить родителя этого сертификата, пока не получу окончательный корневой сертификат, который сам подписан.

Я проверил API сертификатов X509Certificate и соответствующие API в java.security.cert, но не нашел ничего полезного.

+1

Возможный дубликат [Как создать промежуточный и корневой сертификат из существующего сертификата листа?] (Http://stackoverflow.com/questions/11076491/how-to-generate-intermediate-and-root-cert-from- существующий-лист-сертификат) –

+1

Нет надежного способа сделать это. См. Мой ответ на http://stackoverflow.com/a/11076955/47961 –

+1

Вы попробовали [java.security.KeyStore # getCertificateChain()] (http://docs.oracle.com/javase/6/docs/api /java/security/KeyStore.html#getCertificateChain(java.lang.String))? – Zaki

ответ

2

Это не сложно - если вы каким-то образом/вне диапазона получили все промежуточные сертификаты и корневой сертификат в одном или нескольких цепочках ключей.

Посмотрите

http://codeautomate.org/blog/2012/02/certificate-validation-using-java/ 

для кода пропущено, который делает именно это. Бит ключа в validateKeyChain() и в основном состоит из

cert = cert-to-validate 
    while(not self signed) { 
     extract issuer from cert 
     scan keychain(s) to find cert with a subject equal to the issuer 
     if none found - error 
     check if the signature is correct. 
     cert = issuers_cert 
    } 
    if not at the top/root - error 

Как как вы получаете промежуточные/корневые сертификаты - это другой вопрос. Обратите внимание, что этот код немного наивен - и не совсем понимает перекрестное подписание. Java pkix называет, хотя, например, BouncyCastle.

Обычно вы можете создать корневые сертификаты в цепочку ключей; но промежуточные сертификаты часто должны быть «собраны» или обнаружены более динамично. Обычно это требует запроса стека SSL во время TLS или аналогичного.

Смежные вопросы