2012-03-27 8 views
24

Ich versuche das SSL-Zertifikat gemäß this post zu aktualisieren.Fehler beim Importieren des SSL-Zertifikats: Kein X.509-Zertifikat

Ich bin noob in Zertifikate, so folgte ich this guide. Aber, wenn ich

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

eingeben bekomme ich den Fehler:

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) 

Wie kann ich dieses Problem beheben?

+0

Ich denke, dass Befehl funktioniert absolut gut in Java 1.6 oder höher –

Antwort

24

Enthält Ihre cacerts.pem-Datei ein einzelnes Zertifikat? Da es sich um eine PEM ist, einen Blick an ihm haben, sollte es mit

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

und enden mit

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

Schließlich beginnen zu prüfen, es nicht beschädigt ist, habhaft openssl und drucken Sie die Details mit

openssl x509 -in cacerts.pem -text

+0

Nun, es hatte eine Menge solcher Einheiten, ich habe es nur um eins zu ändern.Es wurde erfolgreich installiert. :) – nikel

+0

Haben Sie nur ein BEGINN ZERTIFIKAT und END CERTIFICATE zwischen den gesamten Daten? Ich habe auch das gleiche Problem, können Sie mir bitte helfen, indem Sie sagen, was Sie getan haben? –

+1

Die Linien sollten schon da sein. Wenn dies nicht der Fall ist, ist Ihr Zertifikat wahrscheinlich DER-codiert (oder ungültig). Um es umzuwandeln tun Sie 'openssl x509 -in mycert.der -inform DER-out myCert.pem -outform PEM'. Um es zu sehen und zu verifizieren, öffne ich meinen "openssl -in myCert.pem -text". Die Datei muss ein einzelnes Zertifikat enthalten. –

25

Viele CAs wird ein cERT i liefern n PKCS7-Format.

Nach Oracle documentation kann die keytool commmand PKCS # 7 behandeln, aber manchmal scheitert es

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.

Wenn die PKCS7 Datei nicht versuchen importiert werden kann es von PKCS7 X.509 zu transformieren:

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

Das scheint wie ein alter Thread, aber ich werde meine Erfahrung hier hinzufügen. Ich habe auch versucht, ein Zertifikat zu installieren und habe diesen Fehler bekommen. Ich habe dann die CER-Datei mit einem TXT-Editor geöffnet und festgestellt, dass am Ende jeder Zeile ein zusätzliches Leerzeichen (Zeichen) steht. Durch das Entfernen dieser Zeilen konnte ich das Zertifikat importieren.

Ich hoffe, das ist etwas wert für jemand anderen.

+0

Dies war das Problem für mich auch, ich denke, weil ich den Cert-Text direkt aus der E-Mail vom Zertifikatsanbieter kopiert hat, hinterließ es ein Leerzeichen am Ende jeder Zeile. – Continuity8