2013-04-17 44 views
23

Ho file con catena di certificati - certificate.cer:Come aggiungere la catena di certificati al keystore?

subject=/C... 
issuer=/C=US/O=VeriSign, Inc... 
-----BEGIN CERTIFICATE----- 
... 
-----END CERTIFICATE----- 

subject=/C=US/O=VeriSign, Inc... 
issuer=/C=US/O=VeriSign, Inc... 
-----BEGIN CERTIFICATE----- 
... 
-----END CERTIFICATE----- 

subject=/C=US/O=VeriSign, Inc... 
issuer=/C=US/O=VeriSign, Inc... 
-----BEGIN CERTIFICATE----- 
... 
-----END CERTIFICATE----- 

ho bisogno di aggiungere questa catena di certificati a chiavi.
Quello che faccio:

openssl x509 -outform der -in certificate.cer -out cert.der 
keytool -v -importcert -alias mykey -file cert.der -keypass <passwd> -keystore keystore -storepass <passwd> -alias <myalias> 

In seguito ho solo 1 certificato nella chiavi.
Ma dovrebbe avere 3.
Cosa potrebbe essere sbagliato?

SOLUZIONE:
CA mi ha mandato i certificati in formato PKCS # 7.
li ho memorizzati nel file certificate.p7b e poi aggiunto al keystore dal seguente comando:

keytool -import -trustcacerts -file certificate.p7b -keystore keystore -storepass <mypasswd> -alias "myalias" 
+0

Quale versione di KeyTool è stata utilizzata? La versione '6-b14' non è in grado di importare catene di certificati perché:' // possiamo memorizzare solo un certificato utente per identità. Dai un'occhiata al codice sorgente: 'http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/tools/KeyTool.java # KeyTool.doImportIdentityDatabase% 28java.io.InputStream% 29' –

risposta

8

Dall'uomo keytool - importa catena del certificato, se l'ingresso è dato in formato PKCS # 7, altrimenti solo il singolo certificato è importato. Dovresti essere in grado di convertire i certificati in formato PKCS # 7 con openssl, tramite il comando openssl crl2pkcs7.

+0

Ho già certificati in PKCS # 7 formato. CA li ha mandati via email. I certificati sono stati aggiunti correttamente al keystore mediante il seguente comando: keytool -import -trustcacerts -file certificate.p7b -keystore keystore -storepass -alias "myalias" Grazie! –

+10

Non ha funzionato per me. Sto ricevendo l'errore: 'keytool error: java.lang.Exception: input non un certificato X.509'. Il file p7p è stato creato tramite: 'openssl crl2pkcs7 -nocrl -certfile cacert.pem -certfile client-cert.pem -out outfile.p7b' –

+2

Il post qui:' http: // stackoverflow.com/a/22028156/1817029' dice che keytool non può importare file p7p! –

14

ho risolto il problema cat'ing tutti i PEMS insieme:

cat cert.pem chain.pem fullchain.pem >all.pem 
openssl pkcs12 -export -in all.pem -inkey privkey.pem -out cert_and_key.p12 -name tomcat -CAfile chain.pem -caname root -password MYPASSWORD 
keytool -importkeystore -deststorepass MYPASSWORD -destkeypass MYPASSWORD -destkeystore MyDSKeyStore.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -srcstorepass MYPASSWORD -alias tomcat 
keytool -import -trustcacerts -alias root -file chain.pem -keystore MyDSKeyStore.jks -storepass MYPASSWORD 

(keytool non sapeva cosa fare con una chiave PKCS7 formattato)

ho ottenuto tutte le PEMS da letsencrypt

+0

Bella soluzione, p7b woud non importa per me – cen

+0

Ha funzionato anche per me. Per ottenere quella chiave privata, questa altra risposta è stata utile: https://security.stackexchange.com/a/66865/141918 –

Problemi correlati