簡體   English   中英

找不到類路徑中的 JKS 密鑰庫文件

[英]JKS keystore file in the classpath not found

我正在嘗試使用存儲在 keystore.jks 文件中的 JKS 證書配置 SSL。 我有這段代碼:

@Configuration
@EnableAutoConfiguration
public class SSLConfig {

    @Autowired
    private Environment env;

    @Value("${server.ssl.key-store}")
    private String keyStore;

    @Value("${server.ssl.key-store-password}")
    private String keyStorePassword;

    @PostConstruct
    private void configureSSL() {
        System.setProperty("javax.net.ssl.keyStore", keyStore);
        System.setProperty("javax.net.ssl.trustStore", keyStore);
        System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword);
        System.setProperty("javax.net.ssl.trustStorePassword", keyStorePassword);
        System.setProperty("javax.net.ssl.keyStoreType", "JKS");
        System.setProperty("javax.net.ssl.keyStoreProvider", "SUN");
        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
    }
}

當我在 application.properties 文件中指定值server.ssl.key-store=classpath:config/keystore.jks時,我收到 IOException,說找不到該文件。 如果我指定server.ssl.key-store=src/main/resources/config/keystore.jks一切正常。 當我將部署我的服務時,不會有 src 目錄。 我怎樣才能讓它從類路徑工作?

您好嘗試介紹解決絕對路徑的方法:

 public String absolutePath(String resource) {
        return  Paths.get(System.getProperty("user.dir"))
                .resolve(resource).toAbsolutePath().toString(); 
    } 

@PostConstruct
private void configureSSL() {
    System.setProperty("javax.net.ssl.keyStore", absolutePath(keyStore));
    System.setProperty("javax.net.ssl.trustStore", absolutePath(keyStore));
    System.setProperty("javax.net.ssl.keyStorePassword", absolutePath(keyStorePassword));
    System.setProperty("javax.net.ssl.trustStorePassword", absolutePath(keyStorePassword));
    System.setProperty("javax.net.ssl.keyStoreType", "JKS");
    System.setProperty("javax.net.ssl.keyStoreProvider", "SUN");
    System.setProperty("javax.net.ssl.trustStoreType", "JKS");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM