Importa la coppia di chiavi pubblica privata in un keystore

4

Ho creato una coppia di chiavi pubblica privata utilizzando la classe KeyPairGenerator in Java. Da questa coppia di chiavi ho generato la richiesta CSR utilizzando la classe PKCS10 che è stata inviata a una CA per la verifica. La domanda è: come posso caricare questa coppia di chiavi private pubbliche in un keystore? Non posso usare KeyStore.SetKeyEntry poiché richiede un parametro certificato insieme alla chiave privata.

Ho pensato che avrei dovuto aspettare che la CA restituisse un certificato che dovrebbe essere usato per caricare la coppia di chiavi. Ma se creo il keystore usando il comando keytool -

keytool -genkey -keyalg RSA -keysize 2048 -sigalg sha1withRSA -alias aliasname -validity 365 -keystore keystorename

e quindi caricare questo keystore nella classe keystore Java, l'oggetto keystore contiene un privatekeyentry e un CertificateEntry. Com'è possibile senza ottenere un certificato dalla CA.

    
posta DanMatlin 06.08.2013 - 06:18
fonte

2 risposte

1

Quando crei una coppia di chiavi pubblica / privata con codice Java ( KeyPairGenerator ), la coppia di chiavi normalmente esiste solo nella RAM. L'intera architettura di crittografia Java è estensibile ed è possibile utilizzare una specifica istanza di KeyPairGenerator che salva la chiave privata "da qualche parte", ma, in generale, devi provvedere al salvataggio, ad es. con la classe KeyStore o più manualmente con file espliciti (vedere questa risposta per esempio).

In ogni caso, la richiesta PKCS # 10 inviata alla CA contiene solo la chiave pubblica; la CA non impara mai la chiave privata, quindi non può inviarla a te.

L'utilità della riga di comando keytool può eseguire la parte di memorizzazione stessa. Nel formato "keystore", le chiavi private non esistono da sole ma sono solo collegate a un certificato, pertanto l'utilità keytool genererà un certificato autofirmato che accompagna la chiave privata. Questo è il motivo per cui questo comando:

keytool -genkeypair -keyalg RSA -keysize 2048

ti farà alcune domande, tra cui una password (per cifrare la chiave privata stessa) e alcune cose personali come il tuo nome e la tua nazione: queste sono per riempire i campi del certificato autofirmato.

Quando si ottiene il certificato dalla CA, è possibile importarlo nel keystore, sostituendo il certificato autofirmato. "Alias chiave" viene utilizzato per designare la chiave privata specifica che si desidera utilizzare. Vedi questo post del blog per alcuni dettagli sui comandi coinvolti.

    
risposta data 06.08.2013 - 14:44
fonte
1

Quando si crea un keystore con il keytool Java viene generata una coppia di chiavi e il certificato viene firmato con la chiave privata stessa. Pertanto in questo caso hai un certificato autofirmato.

Puoi controllare questo con il comando

keytool -list -v -keystore <keystore>

Il primo certificato mostrato dovrebbe avere lo stesso proprietario ed emittente.

    
risposta data 06.08.2013 - 08:28
fonte

Leggi altre domande sui tag