2016-07-06 26 views
3

Ich möchte eine Verbindung mit einem TLS-Server mit einem selbstsignierten Zertifikat herstellen, daher benötige ich einen benutzerdefinierten Trust Store. keytool scheint unbedingt ein Passwort zu benötigen, um das Zertifikat zu importieren, aber ich muss den Trust Store wirklich nicht mit einem Passwort schützen. Die Verwendung des Standardpasswortes "changeit" wird funktionieren, aber ich würde es vorziehen, überhaupt kein Passwort zu haben.Kann ich mit keytool einen Java Trust Store ohne Passwort erstellen?

Beachten Sie, dass dies ein "Trust Store" und kein "Schlüsselspeicher" ist. Es gibt also kein geheimes Material im Trust Store: nur das Zertifikat des Servers, damit der Client authentifizieren kann, dass der Server vertrauenswürdig ist.

Ist dies mit keytool möglich? Gibt es andere Tools, die das Passwort aus dem Trust Store entfernen können? Verstehen Sie, dass die Authentifizierung des Trust Stores tatsächlich genutzt werden kann, gibt es bestimmte Gründe, warum ich nicht einen Trust Store ohne Passwort verwenden sollte?

+1

Überprüfen Sie diese http://stackoverflow.com/questions/23629246/is-it-possible-to-create-jks-keystore-file-without-a-password Sie können keinen Keystore ohne Passwort mit keytool, aber Sie können es programmgesteuert tun – pedrofb

Antwort

1

Ich bin mir ziemlich sicher, Keytool lässt Sie ein leeres Passwort eingeben, wenn Sie einen neuen Trust Store erstellen, aber das Problem mit einem Passwort ist, dass ein Angreifer jedes gewünschte Zertifikat einfügen kann und ihm vertraut werden. Dies führt zu bösartigen Möglichkeiten wie zum Beispiel einem man-in-the-middle attack. Ihre Anwendung geht davon aus, dass sie der URL, die ein Angreifer eingerichtet hat, vertrauen kann, sodass sie zum Beispiel nicht daran gehindert wird, Ihre Web-Service-Anrufe umzuleiten.

Es ist definitiv die beste Vorgehensweise, die Schlüsselspeicher- und Vertrauensspeicherkennwörter in Produktionsumgebungen vom Standardwert zu ändern.

+0

Meine Position ist, dass, da das Kennwort des Vertrauensspeichers in Konfiguration und/oder Code einfach verfügbar ist, der Vertrauensspeicher leicht von einem Angreifer in einer privilegierten Position manipuliert werden könnte, also den Vertrauensspeicher hinzufügend Passwort kauft nicht wirklich zusätzliche Sicherheit. Zum Beispiel haben die meisten * NIX-Systeme eine ganze Reihe von PEM-Dateien, die den Truststore des Systems darstellen, und sie sind nur durch Dateiberechtigungen geschützt. Warum sollte der Vertrauensspeicher meiner Anwendung anders sein? –

+1

'keytool' erlaubt kein leeres Passwort, zumindest keine aktuellen Versionen von keytool (Java 1.8 zum Zeitpunkt des Schreibens). –

+0

Andere Tools (und roher Java-Code) * können leere Kennwörter verwenden. Sie können auch die nicht-privaten Elemente eines Schlüsselspeichers (z. B. Zertifikate) ohne ein Kennwort lesen, selbst wenn ein Kennwort für den Schlüsselspeicher selbst vorhanden ist. Sie erhalten nur eine Warnung von 'keytool', dass die Integrität des Schlüsselspeichers nicht verifiziert werden kann. –