java - 类路径中找不到 JKS keystore 文件

标签 java ssl classpath keystore

我正在尝试使用 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.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");
}

关于java - 类路径中找不到 JKS keystore 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61687512/

相关文章:

java - 创建表时默认值语法错误

ssl - 为什么浏览器使用https API访问http网页时不需要安装SSL证书

ssl - Amazon S3 数据完整性 MD5 与 SSL/TLS

java - Maven 中 M2 存储库中自定义生成的 jar 缺少类路径

java - 如何在Windows中的CLASSPATH中设置 "Program Files"和 "Program Files (x86)"

java - 多 IDE 版本控制的 Java 项目 - 是否可以无缝地做到这一点?

java - JPA 2 - 获取@OneToMany 关系中列表的最后一个元素

java - 32 位 JVM 提交 >3G 虚拟内存

c# - .NET HttpListener - 设置浏览器代理时监听 "https://*.8080"时没有流量?

java - Spring 应用程序不考虑 spring.schemas