2013-10-28 18 views
6

Ho ricevuto un nuovo certificato nel formato crt/cert. Quando apro questo file in un editor di testo, hanno aggiunto la catena di certificati completa a questo file. Ogni certificato inizia con:Impossibile caricare il file P7B nel file keystore

-----BEGIN CERTIFICATE----- 

e termina con:

-----END CERTIFICATE----- 

non ci sono linee vuote in mezzo. Poiché non sono appassionato di openssl, ho aperto il certificato in Windows ed ho esportato il certificato con la catena completa nel formato PKCS#7 (test.p7b). Quando apro questo file tutto sembra a posto in Windows e la radice, l'intermedio e il certificato sono tutti nella catena.

Quando ho messo il file test.p7b sul server e si tenta di importare questo con keytool come segue:

keytool -import -trustcacerts -alias my.domain.com -keystore my.domain.keystore -keypass changeme -storepass changeme -file test.p7b 

ottengo il seguente errore:

keytool error: java.lang.Exception: Input not an X.509 certificate 

Quando ho testare il file P7B I anche ottenere errori:

bash-4.1$ openssl x509 -in test.p7b -text 
unable to load certificate 
140009984849736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:698:Expecting: TRUSTED CERTIFICATE 

o:

bash-4.1$ openssl x509 -in test.p7b -inform DER -text 
unable to load certificate 
140396587853640:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1320: 
140396587853640:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:382:Type=X509_CINF 
140396587853640:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:752:Field=cert_info, Type=X509 

Qualcuno può darmi una mano?

+0

openssl x509 -in test.p7b -inform DER -text –

+0

@CamilleG. domanda aggiornata con quell'output. Inoltre genera l'errore –

risposta

5

Quando si importa una catena di certificati, keytool si aspetta che i certificati vengano caricati nel modulo DER. È possibile creare un tale pacchetto con OpenSSL:

1 - Convertire tutti i certificati in formato DER

openssl x509 -in certificate.pem -outform DER -out certificate.crt 

2 - Concat tutti i certificati DER in un singolo file

cat cert1.crt cert2.crt ... > chain.der 

3 - Ora è possibile importare la catena nel vostro keystore con keytool

keytool -importcert -trustcacerts -alias <myalias> -file chain.der -keystore keystore.jks -storepass <mypassword> 

noti che myaliasDEVE essere lo stesso come quello utilizzato quando la chiave è stata generata.

4 - verificare che la catena è stato importato con successo

keytool -list -v -keystore keystore.jks 
+0

Questo certificato non è il nostro certificato, ma un certificato ricevuto dal nostro cliente. Dovrei chiedere al nostro cliente quale alias hanno usato quando è stata creata la chiave? E con la domanda chiave creata intendi la richiesta di firma del certificato (CSR)? –

+0

Anche quando si verifica viene visualizzato il seguente output: 'Il keystore contiene 1 voce'. Sarebbe corretto? –

+0

È possibile trovare l'alias con il comando keytool list 'keytool -list -keystore keystore.jks'. 'Il tuo keystore contiene 1 entry' va bene. L'alias dovrebbe essere stampato sulla riga successiva: ', 28 ottobre 2013, PrivateKeyEntry,' – Jcs