如何以编程方式使用 Spring Boot 和 Tomcat 提供密钥库文件?
Posted
技术标签:
【中文标题】如何以编程方式使用 Spring Boot 和 Tomcat 提供密钥库文件?【英文标题】:How can I programmatically supply the keystore file with Spring Boot and Tomcat? 【发布时间】:2020-11-25 03:27:28 【问题描述】:我知道我们可以使用配置密钥库的文件位置
server.ssl.key-store=file:/path/to/file.p12
出于安全考虑,我们希望删除磁盘上的 P12 文件,并直接从云提供商的保管库中获取它。 由于keystore的密码是可以配置的,所以我可以使用https://***.com/a/44971126/4460877来设置
是否有类似的方法来配置密钥库文件,而不是通过从云提供商获取文件位置来配置它?
【问题讨论】:
【参考方案1】:我能够使用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;
);
【讨论】:
以上是关于如何以编程方式使用 Spring Boot 和 Tomcat 提供密钥库文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot 以编程方式确定当前的活动配置文件 [重复]
如何使用 Spring Boot 以编程方式确定当前的活动配置文件 [重复]
Spring Boot MVC - 如何以编程方式生成实体的 etag 值?
在 Spring Boot 中使用默认模式以编程方式配置 OracleDataSource