Java 如何用Spring Boot和Tomcat以编程方式提供密钥库文件?
我知道我们可以使用Java 如何用Spring Boot和Tomcat以编程方式提供密钥库文件?,java,spring,spring-boot,ssl,tomcat,Java,Spring,Spring Boot,Ssl,Tomcat,我知道我们可以使用 server.ssl.key-store=file:/path/to/file.p12 出于安全考虑,我们希望删除磁盘上的P12文件,并直接从云提供商保险库获取它。 由于可以配置密钥库的密码,因此我可以使用 是否有类似的方法来配置密钥库文件,而不是通过从云提供商获取文件位置来配置它?我能够使用WebServerFactoryCustomizer以编程方式设置密钥库文件,如下所示 @Bean public WebServerFactoryCustomizer&
server.ssl.key-store=file:/path/to/file.p12
出于安全考虑,我们希望删除磁盘上的P12文件,并直接从云提供商保险库获取它。
由于可以配置密钥库的密码,因此我可以使用
是否有类似的方法来配置密钥库文件,而不是通过从云提供商获取文件位置来配置它?我能够使用
WebServerFactoryCustomizer
以编程方式设置密钥库文件,如下所示
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatSslStoreCustomizer() {
// Supply key store password
String keyStorePassword;
// Supply key store file as a stream
InputStream keyStoreFile;
KeyStore keyStore;
try (InputStream is = keyStoreFile) {
keyStore = KeyStore.getInstance(KEY_STORE_TYPE);
keyStore.load(is, keyStorePassword.toCharArray());
}
catch (Exception e) {
throw new RuntimeException("Cannot load keystore file; cause: " + e.getMessage(), e);
}
return tomcat -> tomcat.setSslStoreProvider(new SslStoreProvider() {
@Override
public KeyStore getKeyStore() {
return keyStore;
}
@Override
public KeyStore getTrustStore() {
return null;
}
});
}
@Bean
公共WebServerFactoryCustomizer tomcatSslStoreCustomizer(){
//提供密钥存储密码
字符串密码;
//以流形式提供密钥存储文件
输入流密钥引用;
密钥库;
try(InputStream=keystrefile){
keyStore=keyStore.getInstance(密钥存储类型);
load(即keyStorePassword.toCharArray());
}
捕获(例外e){
抛出新的RuntimeException(“无法加载密钥库文件;原因:”+e.getMessage(),e);
}
返回tomcat->tomcat.setSslStoreProvider(新的SslStoreProvider(){
@凌驾
公共密钥库getKeyStore(){
返回密钥库;
}
@凌驾
公共密钥库getTrustStore(){
返回null;
}
});
}