6

Sto lavorando con i certificati X509 in Java. Dato un certificato è possibile trovare tutti gli altri certificati nella gerarchia di firma fino a quando non si raggiunge il certificato di origine?Ottenere la catena di certificati

Ho un file di certificato (con estensione .cer) e voglio estrarre il certificato di firma genitore. Voglio continuare a trovare il genitore di quel certificato fino a quando ottengo il certificato radice finale, che è autofirmato.

Ho verificato le API del certificato X509Certificate e le API pertinenti in java.security.cert ma non ho trovato nulla di utile.

+1

possibile duplicato di [Come generare cert intermedio e radice da un certificato foglia esistente?] (Http://stackoverflow.com/questions/11076491/how-to-generate-intermediate-and-root-cert-from- an-existing-leaf-certificate) –

+1

Non esiste un modo affidabile per farlo. Vedere la mia risposta su http://stackoverflow.com/a/11076955/47961 –

+1

Hai provato [java.security.KeyStore # getCertificateChain()] (http://docs.oracle.com/javase/6/docs/api /java/security/KeyStore.html#getCertificateChain(java.lang.String))? – Zaki

risposta

2

Questo non è difficile - presumendo che tu abbia in qualche modo/fuori banda tutti i certificati intermedi e il certificato radice in uno o più portachiavi.

Dai un'occhiata alla

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

un codice snipped che fa proprio questo. Il bit chiave è in validateKeyChain() e consiste essenzialmente di

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 

Per quanto riguarda come ottenere i certificati/root intermedi - che è una questione diversa. Nota che questo codice è un po 'ingenuo e non capisce abbastanza la firma incrociata. Il java pkix chiama però - BouncyCastle ha un esempio.

Generalmente è possibile creare i certificati radice in una catena di chiavi; ma i certificati intermedi spesso devono essere "raccolti" o scoperti più dinamicamente. In genere ciò richiede la query sullo stack SSL durante TLS o simili.

Problemi correlati