SSL で保護された接続を介して他のアプリケーションやサービスに接続する Java アプリケーションが多数あります。開発中に、JVM args を使用して、使用するキーストア/トラストストアとパスワードを指定できます。
-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
これは完全に機能します。ただし、本番環境ではパスワードを非表示にする必要があります。JVM args を使用すると、プロセス リストを見た人は誰でもパスワードを平文で見ることができるようになります。
これを回避する簡単な方法はありますか?証明書を JRE の lib/security/cacerts ファイルにインポートすることを検討しましたが、それでもパスワードが必要になると理解しています。1 つのオプションは、パスワードを暗号化してファイルに保存し、その場でアプリケーションを読み取って復号化することですが、これにはすべてのアプリケーションを変更して再リリースする必要があります (かなりの数のアプリケーションがあります)。可能であれば、むしろこれを避けたいと思います。javax.net.ssl ライブラリには、暗号化されたパスワードに対するネイティブの組み込みサポートがありますか (それが base64 エンコーディングのような単純なものであっても、パスワードを非クリアテキストにするものであっても)?
どんな提案でも大歓迎です。