yml

时间:2018-12-20 18:41:45

标签: java spring-boot ssl spring-security keytool

我尝试使用带有RestTemplate的密钥和证书来调用双向SSL安全系统。我使用密钥库来配置证书和密钥。这是生成密钥库的步骤。

  1. openssl pkcs12 -export -in cert.pem -inkey "privateKey.pem" -certfile cert.pem -out myProject_keyAndCertBundle.p12
  2. keytool -importkeystore -srckeystore myProject_keyAndCertBundle.p12 -srcstoretype PKCS12 -destkeystore keystore.jks.jks

然后我在主类中对其进行配置,如下所示。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);


        System.setProperty("javax.net.ssl.keyStore", "keystore.jks");
        System.setProperty("javax.net.ssl.keyStorePassword", "password");
        System.setProperty("javax.net.ssl.keyStoreType", "JKS");
    }

}

它成功运行。

我的问题是,是否有任何方法可以在application.yml中设置此密钥存储区

我尝试如下。但是在那种情况下,我还需要一个证书才能与我的spring boot应用程序连接。

server:
  port: 8443
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: password
security:
  headers:
    hsts: NONE

1 个答案:

答案 0 :(得分:1)

您在application.yml中所做的工作正在保护springboot应用程序。您正在使用提供给您的私钥来保护springboot应用程序,这是错误的。

您需要的是能够在进行外部服务调用之前动态加载给您的密钥库的能力,如下所示:

<main>': undefined method

KeyStore部分是提供给您的密钥库,其中包含私钥和证书链。而且TrustStore仅包含签署私钥的CA链。