我正在运行一个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配置工作。
答案 0 :(得分:2)
这是正确的,您需要使用javax.net.ssl.trustStore和他的配对道具javax.net.ssl.trustStorePassword来检查正在调用的远程服务的有效性。
我通过以下方式了解这三个选项: