Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用Spring Boot和Tomcat以编程方式提供密钥库文件?_Java_Spring_Spring Boot_Ssl_Tomcat - Fatal编程技术网

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;
}
});
}