2012-03-27 26 views
24

Sto tentando di aggiornare il certificato SSL in conformità con this post .Errore importazione certificato SSL: non un certificato X.509

Sono in possesso di certificati, quindi ho seguito this guide. Ma, quando entro

keytool -keystore mycacerts -storepass changeit -importcert -file "C:\Users\Noks\Desktop\cacerts.pem" -v 

ottengo l'errore:

keytool error: java.lang.Exception: Input not an X.509 certificate 
java.lang.Exception: Input not an X.509 certificate 
     at sun.security.tools.KeyTool.addTrustedCert(KeyTool.java:1913) 
     at sun.security.tools.KeyTool.doCommands(KeyTool.java:818) 
     at sun.security.tools.KeyTool.run(KeyTool.java:172) 
     at sun.security.tools.KeyTool.main(KeyTool.java:166) 

Come faccio a risolvere questo problema?

+0

Penso che il comando funzioni perfettamente in java 1.6 o superiore –

risposta

24

Il file cacerts.pem contiene un singolo certificato? Dal momento che si tratta di una PEM, dare un'occhiata a esso, si dovrebbe iniziare con

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

e terminare con

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

Infine, per verificare che non sia danneggiato, entrare in possesso di OpenSSL e stampare i suoi dettagli utilizzando

openssl x509 -in cacerts.pem -text

+0

Beh, aveva un sacco di tali unità, l'ho appena modificato per includerne uno.E 'stato installato con successo. :) – nikel

+0

Hai appena aggiunto un CERTIFICATO DI INIZIO e CERTIFICATO DI FINE tra tutti i dati? Anch'io sto affrontando lo stesso problema, puoi aiutarmi, dicendo cosa hai fatto? –

+1

Le linee dovrebbero già essere lì. Se non lo sono, il tuo certificato è probabilmente codificato DER (o non valido). Per convertirlo fai 'openssl x509 -in mycert.der -inform DER -out myCert.pem -outform PEM'. Per visualizzarlo e verificarlo 'openssl -in myCert.pem -text'. Il file deve contenere un singolo certificato. –

25

Molti CA fornirà un I CERT n formato PKCS7.

Secondo Oracle documentation, il commmand keytool in grado di gestire PKCS # 7, ma a volte non riesce

The keytool command can import X.509 v1, v2, and v3 certificates, and PKCS#7 formatted certificate chains consisting of certificates of that type. The data to be imported must be provided either in binary encoding format or in printable encoding format (also known as Base64 encoding) as defined by the Internet RFC 1421 standard. In the latter case, the encoding must be bounded at the beginning by a string that starts with -----BEGIN, and bounded at the end by a string that starts with -----END.

Se il file PKCS7 non può essere importato cercare di trasformarlo da PKCS7 a X.509:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer 
3

Questo sembra un vecchio thread, ma aggiungerò la mia esperienza qui. Ho provato a installare un certificato e ho ottenuto quell'errore. Ho quindi aperto il file cer con un editor txt e ho notato che c'è uno spazio extra (carattere) alla fine di ogni riga. Rimozione di quelle linee mi ha permesso di importare il certificato.

Spero che questo valga qualcosa per qualcun altro.

+0

Questo era il problema anche per me, penso perché ho copiato il testo cert direttamente dall'email dal fornitore di certificati che lasciava uno spazio alla fine di ogni riga. – Continuity8

Problemi correlati