1
我想要實現在彈簧引導應用SSL其中,我也希望加密(用於測試目的我被基座64編碼它)的密碼密鑰庫,其中我傳遞作爲初始化EmbeddedServletContainerFactory彈簧引導應用程序的JVM參數。Springboot:基於某些標誌
此密碼密鑰存儲到將在下面的方式進行解密以後使用(現在底座64解碼)並形成EmbeddedServletContainerFactory的飛行。
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();
tomcatFactory.setSsl(createSsl());
tomcatFactory.setPort(sslConfig.getHttpsPort());
return tomcatFactory;
}
private Ssl createSsl() {
Ssl ssl = new Ssl();
try {
ssl.setKeyStore("/path/to/keystore.pkcs12");
ssl.setKeyStorePassword(new String(Base64.getDecoder().decode(sslConfig.getKeyPassword())));
ssl.setKeyAlias(sslConfig.getKeyAlias());
} catch (Exception e) {
logger.error(e.getMessage());
}
return ssl;
}
JVM參數:
-Dtls.keyAlias=tomcat
-Dtls.key-store-password=cGFzc3dvcmQ=
POJO存儲別名和密碼從JVM參數獲得:
@Component
public class SSLConfig {
@Value("#{systemProperties['tls.keyAlias']}")
public String keyAlias;
@Value("#{systemProperties['tls.key-store-password']}")
private String keyPassword;
....getters n setters
}
以上配置工作精絕。
現在,我想實現這個基於一些標誌,這將通過JVM參數傳遞說「isSSLEnabled」,設置控制應該流經上面的邏輯,否則它應該以默認的方式工作。
有人可以請指導一下?