在类路径中找不到JKS密钥库文件



我正在尝试使用JKS证书配置SSL,这些证书存储在keystore.JKS文件中。我有一段代码:

@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.keystore=classpath:config/keystore.jks我收到一个IOException,表示找不到该文件。如果我指定server.ssl.keystore=src/main/resources/config/keystore.jks一切正常。当我部署我的服务时,不会有src目录。如何使它在类路径中工作?

Hi尝试介绍解决绝对路径的方法:

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

最新更新