Mam wiele aplikacji Java, które łączą się z innymi aplikacjami i usługami za pośrednictwem połączeń zabezpieczonych przy użyciu protokołu SSL. Podczas rozwoju, mogę określić kluczy/magazynu zaufanych certyfikatów do użycia i hasło za pomocą args JVM:Ukryj hasło magazynu kluczy JK/zaufanych certyfikatów podczas uruchamiania procesu Java
-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
Działa to doskonale. Istnieje jednak wymóg, aby przejść do produkcji, aby ukryć hasło, używając argumentów JVM oznacza, że każdy, kto patrzy na listę procesów, będzie mógł zobaczyć hasło w postaci zwykłego tekstu.
Czy istnieje prosty sposób obejścia tego? Rozważałem zaimportowanie certyfikatów do pliku lib/security/cacerts środowiska JRE, ale mam świadomość, że będzie to wymagało hasła. Jedną z opcji byłoby przechowywanie hasła, zaszyfrowane, w pliku, a następnie pobieranie aplikacji do odczytywania i odszyfrowywania w locie, ale wymaga to zmiany i ponownego wydania wszystkich aplikacji (jest ich sporo), więc wolałbym tego uniknąć, jeśli to w ogóle możliwe. Czy biblioteka javax.net.ssl ma wbudowaną natywną obsługę zaszyfrowanych haseł (nawet jeśli jest to coś tak prostego, jak tylko kodowanie base64), czy coś, co powoduje, że hasła nie zawierają czystego tekstu?
Wszelkie sugestie bardzo doceniane.
Uzgodnione, w pewnym momencie, gdzieś, będzie musiał być zapisany klucz lub hasło. Sądzę, że to jest coś, co musimy rozwiązać za pomocą kont procesu/użytkownika/uprawnień do plików. Dzięki! – Matt