Ich versuche, eine Java-Web-API über HTTPS zu verbinden. Es wird jedoch eine Ausnahme ausgelöst:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
Ich habe die folgenden Schritte ausgeführt, die ich aus Online-Tutorials zu Keytools und SSL-Zertifikaten gelernt habe:
Ich habe die HTTPS-URL in den Browser kopiert, die SSL-Zertifikate heruntergeladen und sie mit Internet Explorer im Browser installiert.
Exportierte die Zertifikate in einen Pfad auf meinem Computer, die Zertifikate wurden als gespeichert
.cer
Verwendete die Importoption des Keytools. Der folgende Befehl wurde fehlerfrei ausgeführt.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
Ich wurde an der Eingabeaufforderung zur Eingabe eines Kennworts aufgefordert, das ich eingegeben und dann authentifiziert habe.
Das
cmd
Fenster druckte einige Zertifikatdaten und Signaturen und ich wurde mit der Frage aufgefordert:Vertrauen Sie diesem Zertifikat?
Ich antwortete ja.
Die cmd-Eingabeaufforderung wird angezeigt
Zertifikat wurde zum Keystore hinzugefügt
Nach dieser Meldung wurde jedoch eine weitere Ausnahme angezeigt:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Als ich schließlich den Keystore überprüfte, wurde das SSL-Zertifikat nicht hinzugefügt, und meine Anwendung gibt dieselbe Ausnahme aus, die ich früher beim Versuch, eine Verbindung herzustellen, erhalten habe:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
quelle
keytool
Befehl, den Sie ausgeführt haben, und seine Ausgabe veröffentlichen? Einige der offensichtlichen Probleme hier sind der Tippfehler-keystore
und die Tatsache, dass Keytool den Schlüsselspeicher zum Importieren des Schlüssels nicht finden konnteAntworten:
Dies kann passieren, wenn Sie die Eingabeaufforderung nicht im Administratormodus ausführen. Wenn Sie Windows 7 verwenden, können Sie loslegen, cmd eingeben und Strg + Umschalt + Eingabetaste drücken. Dadurch wird die Eingabeaufforderung im Administratormodus geöffnet. Wenn nicht, können Sie auch starten -> alle Programme -> Zubehör -> mit der rechten Maustaste auf die Eingabeaufforderung klicken und auf "Als Administrator ausführen" klicken.
quelle
Ich hatte das gleiche Problem unter Windows und konnte es lösen, indem ich cmd.exe als Administrator ausführte (Rechtsklick im Startmenü, dann "Als Administrator ausführen").
quelle
Ich hatte das gleiche Problem beim Importieren des Zertifikats in den lokalen Keystore. Immer wenn ich den Befehl keytool gebe, erhalte ich den folgenden Fehler.
Zertifikat wurde zum Keystore-Keytool-Fehler hinzugefügt: java.io.FileNotFoundException: C: \ Programme \ Java \ jdk1.8.0_151 \ jre \ lib \ security (Zugriff verweigert)
Folgende Lösungsarbeit für mich.
1) Stellen Sie sicher, dass Sie die Eingabeaufforderung in Rus als Administratormodus ausführen
2) Ändern Sie Ihr aktuelles Verzeichnis in% JAVA_HOME% \ jre \ lib \ security
3) Geben Sie dann den folgenden Befehl aus
keytool -import -alias "mycertificatedemo" -file "C: \ Benutzer \ name \ Downloads \ abc.crt" -keystore cacerts
3) Geben Sie das Passwort ein
4) Geben Sie y ein
5) Bei erfolgreichem "Zertifikat wurde zum Keystore hinzugefügt" wird die folgende Meldung angezeigt.
Stellen Sie sicher, dass Sie die " cacerts " nur im Parameterwert -keystore angeben, da ich den vollständigen Pfad wie "C **: \ Programme \ Java \ jdk1.8.0_151 \ jre \ lib \ security **" angegeben habe.
Hoffe das wird funktionieren
quelle
Überprüfen Sie die Schreibberechtigungen im Keystore.
quelle
Stellen Sie für Mac-Benutzer sicher, dass Sie sudo verwenden, und geben Sie bei Aufforderung zuerst Ihr Administratorkennwort an. Darauf folgt das Schlüsselspeicherkennwort, das normalerweise "changeit" lauten sollte, es sei denn, Sie haben es tatsächlich geändert.
quelle
Wenn Sie Windows 8 verwenden:
command prompt
command prompt
und klicken SieRun as administrator
. Führen Sie dann den Befehl keytool aus.quelle
Sie können sich die Berechtigung geben, dieses Problem zu beheben.
Klicken Sie mit der rechten Maustaste auf cacerts> wählen Sie Eigenschaften> wählen Sie die Registerkarte Securit> Alle Berechtigungen für alle Gruppen- und Benutzernamen zulassen.
Das hat bei mir funktioniert.
quelle
Ich habe sogar die Eingabeaufforderung als Administrator ausgeführt, aber mit dem folgenden Fehler hat es bei mir nicht funktioniert.
Wenn sich der Pfad zum Keytool nicht in Ihren Systempfaden befindet, müssen Sie den vollständigen Pfad verwenden, um das Keytool zu verwenden
Der Befehl sollte also so sein
das hat bei mir funktioniert.
quelle
Ich habe diesen Fehler auch erhalten, obwohl ich cmd als Administrator ausgeführt habe.
Die Hauptursache ist: Die Datei stammt aus VCS (Subversion, Perforce usw.), und als ich die Eigenschaften dieser Datei überprüft habe, sind ihre Attribute schreibgeschützt .
Die Lösung lautet also:
quelle
Gelöst
quelle
Sie können eine andere Festplatte oder einen anderen Pfad (nicht C) speichern. EX: D \
quelle