it-swarm.com.de

Java-Keytool-Fehler nach Import des Zertifikats "Keytool-Fehler: Java.io.FileNotFoundException & Zugriff verweigert"

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 folgende Schritte befolgt, die ich aus Online-Tutorials für keytool & SSL cert gelernt habe:

  1. Ich habe die HTTPS-URL in den Browser kopiert, die SSL-Zertifikate heruntergeladen und mit dem Internet Explorer im Browser installiert.

  2. Die Zertifikate in einen Pfad auf meinem Computer exportiert, die Zertifikate wurden als .cer gespeichert.

  3. Verwendet 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
    
  4. Ich wurde an der Eingabeaufforderung zur Eingabe eines Kennworts aufgefordert, das ich dann eingegeben habe, als ich authentifiziert wurde. 

  5. Das cmd-Fenster druckte einige Zertifikatsdaten und -signaturen aus und ich wurde mit der Frage aufgefordert: 

    Vertrauen Sie diesem Zertifikat?

    Ich antwortete ja.

  6. Die Eingabeaufforderung wird angezeigt 

    Das Zertifikat wurde dem Keystore hinzugefügt

    Nach dieser Meldung wurde jedoch eine andere 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 an, die ich beim Verbindungsaufbau zuvor erhalten habe:

(javax.net.ssl.SSLHandshakeException:Sun.security.validator.ValidatorException)
99
cyber101

Dies kann passieren, wenn Sie den Befehl Eingabeaufforderung nicht im Administratormodus ausführen. Wenn Sie Windows 7 verwenden, können Sie zum Ausführen gehen, geben Sie cmd ein und drücken Sie Strg + Umschalt + Eingabetaste. Dadurch wird die Eingabeaufforderung im Administratormodus geöffnet. Wenn nicht, können Sie auch Start -> Alle Programme -> Zubehör -> Befehl Eingabeaufforderung mit der rechten Maustaste aufrufen und auf "Als Administrator ausführen" klicken. 

222

Ich hatte das gleiche Problem unter Windows und konnte es lösen, indem Sie cmd.exe als Administrator ausführen (Rechtsklick im Startmenü, dann "Als Administrator ausführen").

18
daniel

Überprüfen Sie die Schreibberechtigungen für den Keystore.

9
partha saradhi

Beim Importieren des Zertifikats in den lokalen Schlüsselspeicher trat dasselbe Problem auf. Immer wenn ich den Befehl keytool ausstelle, bekam ich den folgenden Fehler.

Das Zertifikat wurde dem Keystore hinzugefügt Keytool-Fehler: Java.io.FileNotFoundException: C:\Programme\Java\jdk1.8.0_151\jre\lib\security (Zugriff wird verweigert)

Folgende Lösung funktioniert für mich.

1) Stellen Sie sicher, dass Sie in Rus als Administratormodus den Befehl Aufforderung 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 erfolgreicher Ausführung wird die folgende Meldung angezeigt. "Zertifikat wurde zum Keystore hinzugefügt"

Stellen Sie sicher, dass Sie den Wert " cacerts " nur im Parameter -keystore param angeben, da der vollständige Pfad wie "C **:\Programme\Java\jdk1.8.0_151\jre\lib\security *" angegeben wurde. * ".

Hoffe das wird funktionieren

7
Waqas Ahmed

Für Mac-Benutzer stellen Sie sicher, dass Sie Sudo verwenden. Wenn Sie dazu aufgefordert werden, geben Sie zunächst Ihr Administratorkennwort ein. Dieses wird gefolgt von einem Keystore-Kennwort, das normalerweise "changeit" sein sollte, sofern Sie es nicht tatsächlich geändert haben. 

2
Vineet Kothari

Wenn Sie Windows8 verwenden:

  1. Klicken Sie auf die Schaltfläche Start
  2. Geben Sie im Suchfeld command Prompt ein.
  3. Klicken Sie im Ergebnis mit der rechten Maustaste auf command Prompt und klicken Sie auf Run as administrator. Führen Sie dann den Befehl keytool aus.
1
arungopal

Ich habe das gleiche Problem unter Windows 10 bei der Verwendung von PowerShell, funktioniert aber bei Verwendung von cmd. 

0
ery

Ich habe sogar den Befehl Eingabeaufforderung als Administrator ausgeführt, aber es hat bei mir nicht funktioniert.

'keytool' is not recognized as an internal or external command,
 operable program or batch file.

Wenn sich der Pfad zum Keytool nicht in Ihren Systempfaden befindet, müssen Sie den vollständigen Pfad verwenden, um das Keytool zu verwenden 

C:\Program Files\Java\jre<version>\bin

Der Befehl sollte also so sein

"C:\Program Files\Java\jre<version>\bin\keytool.exe" -importcert -alias certificateFileAlias -file CertificateFileName.cer -keystore cacerts

das hat für mich funktioniert.

0
sher17