Java Springboot ssl信任库属性不工作
我正在运行一个SpringBoot应用程序,它是一个webservice客户端,向Jboss上的webservice发送请求 jboss上添加了一个证书,从那以后我开始出现异常:Java Springboot ssl信任库属性不工作,java,spring-boot,ssl,truststore,Java,Spring Boot,Ssl,Truststore,我正在运行一个SpringBoot应用程序,它是一个webservice客户端,向Jboss上的webservice发送请求 jboss上添加了一个证书,从那以后我开始出现异常: Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali
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)
因此,我在谷歌上搜索了如何与基于证书的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目录中添加了信任库,并且config目录与myapp.jar处于同一级别)
我的问题:为什么application.yaml configs不工作。我错过了什么
上述方法在没有密码的情况下工作(可能是因为jboss中的密钥库和证书上的密码与信任库密码相同)
工作方法是否存在任何安全问题或任何类型的问题。对于未来,我如何使yaml配置工作 正如您编写的那样,它是正确的,您需要使用javax.net.ssl.trustStore和他的对prop javax.net.ssl.trustStorePassword来检查您正在调用的远程服务的有效性 我通过以下方式理解这3个选项:
- server.ssl.key store=>用于向呼叫您的其他客户端验证您自己(服务器)
- javax.net.ssl.trustStore=>用于验证您作为客户机从Spring Boot应用程序调用的服务器
- server.ssl.trust store=>仅当您使用带Spring的双向ssl时才使用,在Spring中,您将自己作为客户端向其他受ssl保护的服务器进行身份验证。在实现SSL(单向SSL)时,您可能不会经常使用此选项。所以坚持前两个,你就很好了
java -Djavax.net.ssl.trustStore=config/myapp.truststore -jar myapp.jar