Springboot ssl truststore属性不起作用

时间:2018-05-28 05:05:23

标签: java spring-boot ssl truststore

我正在运行一个Spring Boot应用程序,它是一个Web服务客户端,并将请求发送到Jboss上的Web服务。

在jboss上添加了证书,从那时起我开始有例外:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)

所以我在google上搜索了如何与基于证书的Jboss进行通信,并提出了我需要从jboss证书创建信任存储然后在我的应用程序中使用它的想法.yaml

    server:
      port: 7887
      address: 127.0.0.1
      ssl:
  #      enabled: true
        trust-store: file:config/myapp.truststore
        trust-store-password: myappdomain

这些没有用。所以我采用了更多的手册和理由方法

我刚刚做了以下,这很有用。 (对于任何具有相同问题的人来说,这是有效的;我在config目录中添加了truststore,并且config目录与myapp.jar处于同一级别)

java  -Djavax.net.ssl.trustStore=config/myapp.truststore -jar myapp.jar  

我的问题:为什么application.yaml配置没有用。我错过了什么。

上述方法在没有密码的情况下工作(可能是因为密钥在密钥库中是相同的,jboss中的密码与信任存储密码相同)。

该方法是否存在安全问题或任何问题?对于未来我怎样才能使yaml配置工作。

1 个答案:

答案 0 :(得分:2)

这是正确的,您需要使用javax.net.ssl.trustStore和他的配对道具javax.net.ssl.trustStorePassword来检查正在调用的远程服务的有效性。

我通过以下方式了解这三个选项:

  • server.ssl.key-store =>用于向其他呼叫您的客户端进行身份验证(服务器)
  • javax.net.ssl.trustStore =>用于对您从Spring Boot应用程序作为客户端调用的服务器进行身份验证。
  • server.ssl.trust-store =>仅在与Spring一起使用2-way ssl时使用,在该方法中,您将自己身份验证为使用其他SSL安全服务器的客户端。实施SSL(单向ssl)时,您可能不会经常使用此方法。所以坚持前两个就可以了。