gpt4 book ai didi

java - 以编程方式设置信任库

转载 作者:行者123 更新时间:2023-11-28 23:56:52 25 4
gpt4 key购买 nike

我想为我的应用程序设置自定义信任库。我想使用 System.setProperty()。在 tomcat 中设置不是一个选项。

所有的配置貌似都不错,但是就是不行。我使用带有外部 tomcat 的 Spring boot 2.0.6。

我尝试了不同的配置位置,比如在 Bean 的 Postconstruct 中,就在 SpringApplication.run 之前。这是我最近的代码:

 static {
System.setProperty("javax.net.debug", "all");
System.setProperty("javax.net.ssl.trustStore", "/opt/grtc8/profiles/appconf/insurance/https-trust.p12");
System.setProperty("javax.net.ssl.trustStorePassword", "xys");
System.setProperty("javax.net.ssl.trustStoreType", "PKCS12");
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(InsuranceCalculatorApplication.class);
}

public static void main(String[] args){

SpringApplication.run(InsuranceCalculatorApplication.class, args);
}

我有一个证书异常,它似乎没有读取文件或其他东西。

我使用的是 Tomcat 8.5。

最佳答案

在 Java 代码中设置系统属性是一种相当可疑的做法。问题在于,只有当您可以确保设置属性的代码(始终)在使用属性的代码之前运行时,它才会出现。

在这种情况下,初始化 SSL 提供程序时会使用这些属性。这很可能是由执行静态 block 之前发生的一些静态初始化触发的。

有几种方法可以解决这个问题:

  1. 使用 -D 选项从命令行设置属性。根据您的要求,您可以做一些“启动时”的魔术来选择信任存储;例如使用包装器脚本或自定义启动器应用。

  2. 在 Java 代码中为您的 JVM 加载默认信任库等,而不是依赖属性。例如:Load java trust store at runtime - after jvm have been launched? .

    让这种方法与 Tomcat 一起工作可能会很棘手……假设您想为 Tomcat 的服务器端执行此操作。

  3. 显然,如果您使用的是 SpringBoot,则可以替换默认的 Tomcat 连接器;见Spring Boot - replace default embedded Tomcat connector .这可能会给你一个“入口”。

但我认为务实的解决方案是第一个。更改规则:-)

关于java - 以编程方式设置信任库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54363689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com