2017-02-21 2 views
1

Ich habe eine JKS Datei, die mit einem Passwort generiert wurde. Ich habe einen Java-Code, der keystore verwendet, um eine Verbindung zu einer URL herzustellen. Als ich nun den Keystore geladen habe, habe ich versehentlich das Passwort als null übergeben. Aber zu meinem Erstaunen ging die Verbindung immer noch durch.Warum funktioniert eine JKS-Ladung, selbst wenn wir ein Null-Passwort angeben?

KeyStore store = KeyStore.getInstance("JKS"); 
store.load(stream, null); 

Diese Art von Verhalten schien mir verdächtig. Gibt es eine Erklärung dafür?

EDIT:

Wenn dieses Verhalten als erwartet, warum ist dann das Passwort erforderlich, wenn ein Schlüsselspeicher über keytool zu schaffen?

+0

Haben Sie tatsächlich eine Verbindung zu einer 'https'-Site (um auszuschließen, dass das Passwort nur verwendet wird, wenn es wirklich benötigt wird)? –

+0

Ja, ich verbinde mich mit einer 'HTTPS' Seite! – MozenRath

Antwort

2

Wenn Sie das Passwort nicht angeben:

  1. Der Schlüsselspeicher ist keine Integritätsprüfung beim Öffnen.
  2. Sie können auf keine privaten Schlüsseleinträge zugreifen.

Für ein KeyStore als -Vertrauen verwendet, das heißt nur vertrauenswürdige Zertifikate enthält, ist dies eine normale Nutzung.

Wenn dieses Verhalten wie erwartet ist, warum ist dann die Passphrase erforderlich, wenn ein Keystore über Keytool erstellt wird?

So dass Sie eine beim Öffnen liefern können, um das Verhalten bei (1) oder (2) oben zu bekommen.

+0

Können Sie bitte den zweiten Punkt näher ausführen? Wie fügen Sie einen privaten Schlüssel im Schlüsselspeicher hinzu? Was wird normalerweise verwendet, wenn Sie es als TrustStore verwenden? ist es mit Passwort oder ohne Passwort? – MozenRath

+0

Sie fügen dem Keystore über die API oder das 'keytool' einen privaten Schlüssel hinzu. Es ist normal, dass ein Truststore kein Passwort angibt, worum es bei Ihrer Frage geht. Ich verstehe nicht, warum Sie eine dieser Fragen stellen. – EJP

-1

Hm, ich glaube, dass die Passphrase, die Sie übergeben, die Integrität des Keystores selbst sicherstellen soll (wenn Sie den Inhalt selbst ändern). Wenn jedoch keine Passphrase zur Verfügung gestellt wird, können die Inhalte (Schlüssel/Zertifikate) immer noch gelesen werden - was Sie gerade erleben.

Zu Illustrationszwecken können Sie den Inhalt eines Schlüsselspeichers auch anzeigen, indem Sie den folgenden Befehl ausführen: keytool -list -keystore <keystore> - dies bedeutet nicht, dass eine Passphrase an den Schlüsselspeicher übergeben wird.

Sie können hierüber auch mehr über die load() - Funktion selbst auf dem KeyStore-Objekt lesen: http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html#load(java.io.InputStream,%20char[]).

Strom - der Eingangsstrom, aus dem der Schlüsselspeicher geladen wird, oder null

Passwort - das Passwort verwendet, um die Integrität des Schlüsselspeichers zu lesen, verwendet das Passwort mit den Schlüsselspeicher, oder null

zu entsperren
Verwandte Themen