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 das beheben?
Ich denke, dieser Befehl funktioniert in Java 1.6 oder höher absolut einwandfrei
– Chaitanya Gudala
27. Okt. 2014 um 15:29
Bruno Grieder
Enthält Ihre cacerts.pem-Datei ein einzelnes Zertifikat? Da es sich um ein PEM handelt, schauen Sie es sich an (mit einem Texteditor), es sollte damit beginnen
-----BEGIN CERTIFICATE-----
und ende mit
-----END CERTIFICATE-----
Um abschließend zu überprüfen, dass es nicht beschädigt ist, besorgen Sie sich OpenSSL und drucken Sie die Details mit aus
openssl x509 -in cacerts.pem -text
Nun, es gab viele solcher Einheiten, ich habe sie nur um eine erweitert. Sie wurde erfolgreich installiert. 🙂
– Nikel
27. März 2012 um 13:33
Haben Sie zwischen den gesamten Daten gerade ein BEGIN CERTIFICATE und ein END CERTIFICATE eingefügt? Ich stehe auch vor dem gleichen Problem. Können Sie mir bitte helfen, indem Sie sagen, was Sie getan haben?
– Rengasami Ramanujam
10. Mai 2012 um 13:13
Die Zeilen sollten bereits vorhanden sein. Ist dies nicht der Fall, ist Ihr Zertifikat wahrscheinlich DER-codiert (oder ungültig). Um es zu konvertieren, tun Sie es openssl x509 -in mycert.der -inform DER -out myCert.pem -outform PEM. Um es anzuzeigen und zu überprüfen openssl -in myCert.pem -text. Die Datei muss ein einzelnes Zertifikat enthalten.
– Bruno Grieder
10. Mai 2012 um 14:19
Das Problem kann auch darin liegen keytool kann etwas überempfindlich auf Leerzeichen und Zeilenenden reagieren. Ich habe versucht, das zu importieren Lassen Sie uns verschlüsseln Zertifikat, und es ist deshalb fehlgeschlagen, und ich habe das Zertifikatformat mit korrigiert openssl x509 -in broken.pem -out correct.pem und es wurde importiert correct.pem ohne Probleme.
– Stefan Seidel
16. März 2016 um 9:45 Uhr
Kleinschreibung x509 ist wichtig!
– Deian
1. Juni 2019 um 14:54
superfaul
Viele Zertifizierungsstellen stellen ein Zertifikat im PKCS7-Format zur Verfügung.
Entsprechend Oracle-Dokumentationder Befehl keytool kann PKCS#7 verarbeiten, aber manchmal schlägt er fehl
Der Befehl keytool kann X.509 v1-, v2- und v3-Zertifikate sowie PKCS#7-formatierte Zertifikatsketten importieren, die aus Zertifikaten dieses Typs bestehen. Die zu importierenden Daten müssen entweder im binären Kodierungsformat oder im druckbaren Kodierungsformat (auch als Base64-Kodierung bekannt) bereitgestellt werden, wie im Internet-Standard RFC 1421 definiert. Im letzteren Fall muss die Codierung am Anfang durch eine Zeichenfolge begrenzt werden, die mit —–BEGIN beginnt, und am Ende durch eine Zeichenfolge begrenzt werden, die mit —–END beginnt.
Wenn die PKCS7-Datei nicht importiert werden kann, versuchen Sie, sie von PKCS7 in X.509 umzuwandeln:
Was das Dokument nicht klarstellt, ist, dass Sie -importcert Auf einen vorhandenen Privatekey-Eintrag wird eine „Zertifikatsantwort“ erwartet, bei der es sich entweder um ein einzelnes Zertifikat oder eine Kette einschließlich einer PKCS7-Verwendung handeln kann CertificateFactory.generateCertificates (mit s am Ende) aber wenn du -importcert Für einen neuen Trustedcert-Eintrag wird nur ein Zertifikat und KEINE Verwendung von PKCS7 erwartet generateCertificate (keine s). Wenn Sie mehreren Zertifikaten in einer Kette vertrauen möchten (und der Sinn der Verkettung besteht darin, dass dies nicht erforderlich ist), müssen Sie sie einzeln in verschiedene Aliase importieren.
– dave_thompson_085
2. Februar 2019 um 12:11 Uhr
Ich stand auch vor dem Problem Keytool-Fehler: java.lang.Exception: Geben Sie kein X.509-Zertifikat ein Ich habe den obigen Befehl auf mein pkcs12-Zertifikat angewendet, aber -print_certs durch -clcerts geändert. Man kann alle pkcs12-Befehle mit sehen openssl pkcs12 -help. Befehl ist: openssl pkcs12 -clcerts -in certfile.p12 -out newcertfile.cer Geben Sie das P12-Zertifikatskennwort und dann die Passphrase für PEM ein. Hinweis: Ich habe das p12-Zertifikat an einen anderen Ort kopiert und dann daraus .cer generiert, um jegliches Risiko für das ursprüngliche Zertifikat zu vermeiden.
– Noor Khan
27. November 2021 um 15:10 Uhr
XDanny322
Das scheint ein alter Thread zu sein, aber ich werde hier meine Erfahrungen hinzufügen. Ich habe auch versucht, ein Zertifikat zu installieren und habe diesen Fehler erhalten. Dann habe ich 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 jemand anderem etwas wert.
Das war auch bei mir das Problem. Da ich den Zertifikatstext direkt aus der E-Mail des Zertifikatsanbieters kopiert habe, blieb am Ende jeder Zeile ein Leerzeichen übrig.
– Kontinuität8
10. September 2017 um 5:10
Jesus Christus. Das hat mich tatsächlich gerettet. Danke schön!
– SirDerpington
28. April 2020 um 15:27 Uhr
Um dies auf einfache Weise zu tun, ersetzen Sie, wenn Ihr Texteditor das Suchen/Ersetzen mit Regex unterstützt (z. B. Programmer’s Notepad). \s*[\r\n]+\s* mit \n.
– JohnLBevan
19. Februar 2021 um 9:36 Uhr
Mike Nakis
Wie die verschiedenen anderen Antworten auf diese Frage zeigen, gibt es viele verschiedene mögliche Ursachen für diese Fehlermeldung. Der Grund, warum es Ihnen passiert, kann ein völlig anderer sein als der Grund, warum es mir passiert. Und leider gibt die Fehlermeldung überhaupt keinen Aufschluss über die eigentliche Ursache des Problems und ist daher bei der Fehlerbehebung völlig nutzlos. Es ist tatsächlich völlig irreführend.
Anstatt Ihnen also noch eine weitere der unzähligen möglichen Ursachen dieser Fehlermeldung zu nennen, zeige ich Ihnen stattdessen, wie Sie dieses Problem beheben können, um herauszufinden, was es in Ihrer speziellen Situation verursacht.
Bei der Arbeit verwenden wir üblicherweise die folgenden zwei Befehle, um einer Software die Kommunikation mit verschiedenen Servern zu ermöglichen, beispielsweise um IntelliJ IDEA die Kommunikation mit unseren internen Maven-Repositorys zu ermöglichen:
Nun, was manchmal passiert, ist, dass die keytool -printcert Der Befehl kann seine Aufgabe nicht ausführen, entweder aufgrund einer Fehlkonfiguration oder einfach aufgrund vorübergehender Verbindungsprobleme, z. B. weil die Firewall dies verhindert, der Benutzer vergessen hat, sein VPN zu starten, was auch immer. Es ist eine Tatsache des Lebens, dass dies passieren kann. Das ist eigentlich nicht das Problem.
Das Problem besteht darin, dass das dumme Tool, wenn es auf einen solchen Fehler stößt, die Fehlermeldung nicht an das Standardfehlergerät, sondern an das Standardausgabegerät ausgibt!
Folgendes passiert also:
Wenn Sie den ersten Befehl ausführen, wird keine Fehlermeldung angezeigt, Sie haben also keine Ahnung, dass der Befehl fehlgeschlagen ist. Anstelle eines Schlüssels wird jedoch der public.crt Die Datei enthält jetzt eine Fehlermeldung keytool error: java.lang.Exception: No certificate from the SSL server.
Wenn Sie den zweiten Befehl ausführen, wird Folgendes angezeigt: public.crt und es findet den Text der Fehlermeldung anstelle eines Schlüssels darin, sodass es fehlschlägt keytool error: java.lang.Exception: Input not an X.509 certificate.
Fazit: danach keytool -printcert ... > public.crt Entsorgen Sie immer den Inhalt von public.crt Stellen Sie sicher, dass es sich tatsächlich um einen Schlüssel und nicht um eine Fehlermeldung handelt, bevor Sie mit der Ausführung fortfahren keytool -import ... -file public.crt
Ich habe 3 Dinge geändert und dann funktioniert es:
Es gibt eine Spalte mit Leerzeichen, ich habe sie entfernt
Der Zeilenumbruch wurde von Windows CRLF in Linux LF geändert
Die Leerzeile am Ende wurde entfernt.
Pawel Zentala
Ich musste Leerzeichen vor der neuen Zeile danach entfernen -----BEGIN CERTIFICATE-----.
14516500cookie-checkFehler beim Importieren des SSL-Zertifikats: Kein X.509-Zertifikatyes
Ich denke, dieser Befehl funktioniert in Java 1.6 oder höher absolut einwandfrei
– Chaitanya Gudala
27. Okt. 2014 um 15:29