【问题标题】:Spring Boot calling HTTPS endpointSpring Boot 调用 HTTPS 端点
【发布时间】:2016-05-27 16:06:33
【问题描述】:

我创建了一个 Spring Boot 应用程序,我将其作为穷人的守护进程运行,以在另一个 tomcat 实例上调用另一个 Java 服务。我在连接到其他 Java 服务时遇到 SSL 错误,但是如果我使用 SoapUi(或 Postman)之类的东西使用相同的 URL 和标头访问其他服务,我会得到一个 OK 响应。所以我的 Spring Boot 配置一定有问题。

我对 Spring Boot 和 SoapUI 使用相同的 JKS。我尝试在 application.properties 中使用证书,并使用-Djavax.net.ssl.keyStore 以及相关的密码参数在命令行中指定它。

当我在没有 SSL 的情况下在本地运行其他服务时,我可以通过我的 Spring Boot 应用程序正常连接。

我得到的 SSL 错误是:sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server

我能想到的最好的办法是 SoapUI(或 Postman)将自己标识为客户端应用程序,而我的 Spring Boot 将自己标识为服务器?所以我认为我在问如何让 Spring Boot 将自己标识为客户端,但我仍然不确定我是否理解 SSL 错误。

【问题讨论】:

    标签: ssl spring-boot tomcat8


    【解决方案1】:

    你有很多问题。首先,soapui 在连接时不做服务器 SSL 证书的验证,java 默认不做。但是,您可以将 java 客户端配置为也忽略服务器证书验证。

    如何忽略取决于您使用的客户端,apache httpclient 是最常见的客户端,您可以在 in this thread 找到详细信息。

    现在,你真的不应该那样做。相反,您应该有一个信任库,其中包含将验证服务器证书的证书。在这种情况下,您会对 truststore 配置感兴趣,而不是 keystore - 当您向其他方表明自己的身份时,keystore 是另一种方式。您需要将根 CA 和中间证书导入您的信任库,然后在您的配置中指向它。

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2020-05-20
      • 2016-07-18
      • 2015-01-31
      • 1970-01-01
      相关资源
      最近更新 更多