Come generare il keystore per il certificato firmato root?

3

Devo creare il keystore e il truststore con i certificati firmati root.

Ho questi file (in questo passaggio sono identici per client e server):

  1. client_cert.pem

  2. client_prv_key.pem

  3. root_cert.pem

  4. client_password diciamo 12345

Creerò il truststore con il certificato client. Ora ho bisogno di creare il keystore. Ho provato questo:

openssl pkcs12 -export -inkey root_cert.pem -in client_cert.pem -out client.p12

Questo genera un errore: " unable to load private key ".

Il comando successivo, dopo aver creato il file .p12 è (quando il comando openssl terminerà correttamente):

keytool -importkeystore -srckeystore client.p12 -srcstoretype pkcs12 -destkeystore client.jks -deststoretype jks

Quale dovrebbe essere il comando per creare il keystore con i certificati firmati da root? Come dovrei creare il file .p12 con il certificato firmato root?

Inoltre, per l'autenticazione reciproca nel truststore Java è richiesto. Dopo aver provato alcune opzioni, il modo corretto per creare il truststore è: (12345 è client_password che ho usato in tutti i posti in cui è stata richiesta la password)

keytool -importcert -trustcacerts -keystore client_truststore.jks -storetype jks -storepass 12345 -file root_cert.pem

Dove 12345 è client_password (che ho usato in tutte le posizioni in cui era richiesta la password)

    
posta KerenSi 02.08.2015 - 14:23
fonte

1 risposta

1

Supponendo che i nomi dei file siano precisi, quindi client_cert.pem e client_prv_key.pem contengono effettivamente rispettivamente il certificato cliente e la chiave privata in formato PEM:

openssl pkcs12 -export -in client_cert.pem -inkey client_prv_key.pem -certfile root_cert.pem -out client.p12
# prompts for the input-key passphrase, then the output passphrase (twice)

# to specify passphrase on commandline for client_prv_key -passin pass:xyz
# similarly passphrase on commandline for the output -passout pass:xyz
# however these make the password(s) visible in ps or similar on most OSes,
# and usually visible in your shell (or CMD) history, which is often insecure

In alternativa puoi fornirli tutti sullo standard input nell'ordine corretto :

cat client_prv_key.pem client_cert.pem root_cert.pem | openssl pkcs12 -export -out client.p12
# same options for passphrase

PS- NON inserire una passphrase vuota per PKCS12. OpenSSL ti consente di crearlo anche se è stupido, ma Java non può decrittografarlo, il che è in grado di sconfiggere il tuo scopo.

    
risposta data 05.08.2015 - 06:57
fonte

Leggi altre domande sui tag