gpt4 book ai didi

java - Spring Boot ssl 信任库属性不起作用

转载 作者:行者123 更新时间:2023-12-04 22:34:46 25 4
gpt4 key购买 nike

我正在运行一个 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)

所以我在谷歌上搜索了如何与基于证书的 Jboss 进行通信,并想出了我需要从 jboss 证书创建一个信任库然后在我的 application.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 处于同一级别)
java  -Djavax.net.ssl.trustStore=config/myapp.truststore -jar myapp.jar  

我的问题:为什么 application.yaml 配置不起作用。我是不是错过了什么。

上述方法无需密码即可工作(可能是因为 jboss 中的 keystore 和证书上的密码与信任库密码相同)。

有效的方法是否存在任何安全问题或任何类型的问题。以及将来如何使 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 中使用 2-way ssl 时才使用,您可以在其中将自己作为客户端向其他 SSL 安全服务器进行身份验证。在实现 SSL(单向 ssl)时,您可能不会经常使用它。所以坚持前两个,你很好。
  • 关于java - Spring Boot ssl 信任库属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50559420/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com