春ブートバージョンのコードで設定したキーストアパスワード: 1.5.4.RELEASE春ブーツ -
私は現在、私の春のブートアプリケーションのコードの中に私のserver.ssl.key-store-password
を設定すると問題を抱えています。私たちはパスワードを保管庫に保管しており、以前は-D
のプロパティでパスワードを渡していました。しかし、これは私たちにとって理想的な解決策ではありません。
ソリューションは簡単に見えた、と下の私がやったことです:ServletConfig
がapplication.properties
前をロードされているよう
@Bean
public ServletContextInitializer initializer() {
final String keyStorePassword;
// ... Get Password
return servletContext -> servletContext.setInitParameter("server.ssl.key-store-password", keyStorePassword);
}
Spring Boot Documentationによれば、これは、問題ないはずです。
残念ながら、Tomcatはこのようにしてserver.ssl.key-store-password
のセットを開始することを拒否します。私が見ることができるように、AbstractNestablePropertyAccessor
はorg.springframework.boot.context.embedded.Ssl
オブジェクトを構成し、Tomcatに供給され、キーストアを構築するために使用されます。これはSpringApplication.run()
の間に行われます。これは明らかに、ServletConfig
beanの構築前です。
だから、私はコンテキストをリフレッシュする必要があるようです(私が理解していることは、それを破壊/再作成することです)、別のアプローチを見つける必要があります。これはしかし、独自の問題を抱えている
public static void main(String[] args) {
String keyStorePassword = getKeystorePassword();
HashMap<String, Object> props = new HashMap<>();
props.put("server.ssl.key-store-password", keyStorePassword);
new SpringApplicationBuilder()
.sources(TesterApplication.class)
.properties(props)
.run(args);
}
:私はのようなものを使用してプロパティを設定することができます。私は、私のapplication.ymlにボールトのパスワードの 'ラベル'を保存することを考えていましたが、そうした場合、Springが起動する前にそのラベルにアクセスすることはできません(手動で、それ自身の複数のプロファイルの問題)。
他に誰かがこの問題の解決策を見つけましたか?おそらく私のアプローチは間違っていて、もっと簡単な方法があります。