Frage

ich nur ein Vertrauen mit dem Java-keytool erstellt (für Server-Authentifizierung von einem Server, der nicht ein CA-Zertifikat verfügt). Ich jedoch nur etwas seltsam bemerkt. Ich beginne meinen Klienten wie folgt aus:

java -Djavax.net.ssl.trustStore=<PATHSTUFF>/client.keystore -classpath <STUFF> Client

(Hinweis: Es ist kein Passwort angegeben)

Der obige Aufruf funktioniert.


, wenn ich dies jedoch versuchen:

java -classpath <STUFF> Client

Es funktioniert nicht. (Offensichtlich funktioniert es nicht erfordert es die Trusts).


Ich war nach Bedarf erwarte in dieser Option passieren (aber ich habe nicht):

-Djavax.net.ssl.trustStorePassword=mypass

Frage : Sie benötigen kein Passwort für den Zugriff eines Trusts? Ist das Passwort nur für eine Änderung? Was ist mit einem Schlüsselspeicher?

War es hilfreich?

Lösung

Das Passwort wird verwendet, um die Integrität eines Schlüsselspeichers zu schützen. wenn Sie kein Speicherkennwort zur Verfügung stellen, können Sie immer noch den Inhalt des Schlüsselspeichers lesen. Der Befehl keytool -list zeigt dieses Verhalten (verwenden Sie es mit einem leeren Passwort).

Andere Tipps

Neben @ pascal-thivent ‚s ausgezeichnete Antwort:

Das Kennwort für Schlüsselspeicher hat zwei Zwecke - wenn nicht im Lieferumfang enthalten, keytool lassen verweigert Sie den Inhalt des Speichers mit neuen Inhalten ersetzen z.B. durch das Löschen bestehender oder das Hinzufügen neuer Zertifikatseinträge.

Natürlich, wenn Sie Schreibzugriff haben die Schlüsselspeicherdatei mit keytool zu aktualisieren (es ist nicht setuid ist), können Sie den Inhalt mit einem anderen Werkzeug zu ersetzen, die das Passwort nicht überprüfen haben. Und wir wissen, dass das Geschäft und sein Format ohne Passwort lesbar ist, so vermutlich können wir schreiben, was wir wollen es.

Das ist, wo die Überprüfung Passwort kommt-in. Wenn die Speicher-Einträge geschrieben-out sind, wird das mitgelieferte Speicherkennwort zu berechnen eine verdaut die Store-Inhalte verwendet wird, durch das Passwort gesalzen wie. Dies ist ein Einweg-Hash / verdauen, also ohne das Passwort können Sie nicht überprüfen, ob die Speicherinhalte mit oder nicht manipuliert wurden. Ebenso jemand böswillig, der das Passwort nicht kennt auch das Geschäft der Inhalt nicht ändern können und produzieren die verdauen-Hash, die von diesem Passwort erzeugt werden würde.

Das ist, warum, wenn Sie keine-Passwort angeben, warnt Sie keytool nur, dass es nicht, dass der Speicher überprüfen kann, wurde nicht manipuliert. Wenn Sie ein liefern ungültig Passwort oder Shop hat manipuliert wurde, werden Sie eine andere Meldung:

Enter keystore password: keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

keytool war nicht in der Lage, neu erstellen die bestehende Hash Digest auf Basis des aktuellen Speicherinhalt und das Passwort, das Sie geliefert, also entweder das Passwort falsch ist, oder der Schlüsselspeicher beeinträchtigt wird - keytool kann nicht sagen, aber es wird davon ausgegangen, dass Sie oder die Software liest den Laden kennt.

Beachten Sie, dass während der Laufzeit Schlüsselspeicher im Allgemeinen verwendet wird, bezieht er sich in gleicher Weise auf Schlüsselspeicher und Truststores . Weniger allgemein, ein Schlüsselspeicher ist häufiger ein Identitätsspeicher und enthält Identitäten und ihre geheimen, privaten Schlüssel, wie zum Beispiel verwendet von einem Server mit HTTPS. A -Vertrauens häufiger enthält nur öffentliche Schlüssel und keine privaten Schlüssel, so dass keine Geheimnisse, aber es ist wichtig, zu bestimmen, welche Identitäten ein Client vertraut.

Wenn Sie nicht ein Vertrauen angeben, wird der Standard eines stattdessen verwendet. Ich gehe davon aus, erhalten Sie einen Fehler, dass Sie einen Trusts um angeben müssen werden den Host, den Sie verlangen zu vertrauen? Das Standard-Vertrauen besteht in $ JAVA_HOME / lib / security / jssecacerts.

In der Standardeinstellung ist das JRE Trust Store-Passwort "changeit". Wenn Sie die Standardvertrauensspeicher (cacerts) Passwort programmatisch mit Hilfe von Java ändern wollen, dann gehen Sie bitte durch Link .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top