【问题标题】:Adding Java environment variables in application.properties in springboot在spring boot的application.properties中添加Java环境变量
【发布时间】:2021-08-23 22:49:15
【问题描述】:

我正在运行一个 springboot 应用程序,它需要信任我在本地信任库中添加的证书。 现在我在 intellij 的运行配置选项下设置它并且它可以工作。 ex->::-Djavax.net.ssl.trustStore=location\cacerts;-Djavax.net.ssl.trustStorePassword=changeit

我想知道有什么方法可以像我们设置spring属性的方式从springboot中的application.properties文件中设置它吗?

【问题讨论】:

  • 为什么需要 java 环境变量而不是 OS 环境变量?

标签: spring spring-boot spring-security-oauth2


【解决方案1】:

如果你想进行 REST 调用,你可以像这样配置RestTemplate Bean:

@Configuration
public class SslConfiguration {
    @Value("${http.client.ssl.trust-store}")
    private Resource keyStore;
    @Value("${http.client.ssl.trust-store-password}")
    private String keyStorePassword;

    @Bean
    RestTemplate restTemplate() throws Exception {
        SSLContext sslContext = new SSLContextBuilder()
                .loadTrustMaterial(
                        keyStore.getURL(),
                        keyStorePassword.toCharArray()
                ).build();
        SSLConnectionSocketFactory socketFactory = 
                new SSLConnectionSocketFactory(sslContext);
        HttpClient httpClient = HttpClients.custom()
                .setSSLSocketFactory(socketFactory).build();
        HttpComponentsClientHttpRequestFactory factory = 
                new HttpComponentsClientHttpRequestFactory(httpClient);
        return new RestTemplate(factory);
    }
}

检查这个:Example

【讨论】:

  • 我有一个疑问。使用时是否需要为cacerts提供.Jks扩展名,或者我们可以通过提供路径直接使用它。当我看到使用.truststore和.jks之类的扩展名时我感到很困惑,而cacerts根本没有扩展名。
  • 没有。你不需要。请参阅此示例 - RestTemplate and Truststore
猜你喜欢
  • 2016-06-08
  • 2020-09-18
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多