Ich habe eine Reihe von Java-Anwendungen, die Verbindung zu anderen Anwendungen und Diensten über Verbindungen mit SSL gesichert. Während der Entwicklung kann ich den Schlüsselspeicher/Trusts angeben zu verwenden und das Passwort durch die JVM args mit:Verbergen JKS keystore/truststore Kennwort beim Ausführen von Java-Prozess
-Djavax.net.ssl.trustStore=certificate.jks
-Djavax.net.ssl.trustStorePassword=mypassword
-Djavax.net.ssl.keyStore=certificate.jks
-Djavax.net.ssl.keyStorePassword=mypassword
-Djavax.net.ssl.keyStoreType=jks
Dieses perfekt funktioniert. Es gibt jedoch eine Anforderung, wenn Sie in die Produktion gehen, um das Kennwort zu verbergen. JVM-Argumente bedeuten, dass jeder, der sich die Prozessliste ansieht, das Kennwort im Klartext sehen kann.
Gibt es einen einfachen Weg, um dies zu umgehen? Ich überlegte, die Zertifikate in die lib/security/cacerts-Datei der JRE zu importieren, aber ich gehe davon aus, dass dies immer noch ein Passwort erfordert. Eine Option wäre, das Passwort verschlüsselt in einer Datei zu speichern und dann die Anwendungen zum Lesen und Entschlüsseln im laufenden Betrieb zu bringen, aber das beinhaltet die Änderung und erneute Freigabe aller Anwendungen (es gibt einige davon), also ich würde das lieber vermeiden, wenn irgend möglich. Verfügt die Bibliothek javax.net.ssl über eine integrierte native Unterstützung für verschlüsselte Kennwörter (auch wenn es so einfach ist wie base64encoding oder alles, was die Kennwörter zu einem unklaren Text macht)?
Irgendwelche Vorschläge sehr geschätzt.
Vereinbar, irgendwo, irgendwann muss ein Schlüssel oder ein Passwort gespeichert werden. Ich denke, das müssen wir mit Prozess-/Benutzerkonten/Dateiberechtigungen lösen. Vielen Dank! – Matt