【问题标题】:Spring Vault SSLPeerUnverifiedExceptionSpring Vault SSLPeerUnverifiedException
【发布时间】:2020-03-09 22:24:04
【问题描述】:

我有一个在 Spring Boot 中运行的应用程序,使用 Spring Vault 检索密码。它正在使用 KubernetesAuthentication 登录。 这一直很好,直到我升级到 Spring Boot 2.2.5。然后我开始得到 SSLPeerUnverifiedException。

org.springframework.web.client.ResourceAccessException:
    I/O error on POST request for "https://vault.vault.svc.cluster.local:8200/v1/auth/kubernetes/login"
javax.net.ssl.SSLPeerUnverifiedException: 
    Certificate for <vault.vault.svc.cluster.local> doesn't match any of the subject alternative names: [vault.vault, vault.vault-lite, vault.vault-ha, vault.vault-dev, vault.vault.svc.cluster.local, 127.0.0.1]

有了下面的依赖,一切正常:

spring-vault-core: 2.2.2.RELEASE
org.springframework.web: 5.2.3.RELEASE
httpcomponents.httplient: 4.5.10

更新到下面,开始失败:

spring-vault-core: 2.2.2.RELEASE
org.springframework.web: 5.2.4.RELEASE
httpcomponents.httplient: 4.5.11

我可以通过提供自定义 ClientHttpRequestFactory 而不是使用默认值来使其工作。

像这样创建 Vault RestTemplate 会导致 SSLPeerUnverifiedException:

VaultClients.createRestTemplate(vaultEndpointProvider(vaultEndpoint),
                new HttpComponentsClientHttpRequestFactory());

像这样创建 RestTemplate:

VaultClients.createRestTemplate(vaultEndpointProvider(vaultEndpoint),
            new CustomRequestFactory()) //extends SimpleClientHttpRequestFactory

问题是为什么 Spring/HttpClient 中的更新会导致证书验证失败。证书似乎有效,因为我要连接的主机位于证书的 SAN 中。

更新 问题似乎出在 httpcomponents.httpclient 4.5.11 上。我可以通过使用最新版本的Spring-VaultSpringSpring-Boot 和使用httpcomponents.httplient 4.5.104.5.12 来让它工作

【问题讨论】:

    标签: spring spring-boot apache-httpcomponents spring-vault


    【解决方案1】:

    这是由HttpClient 版本4.5.11 中引入的错误引起的。修复于4.5.12

    https://issues.apache.org/jira/browse/HTTPCLIENT-2047

    【讨论】:

      猜你喜欢
      • 2016-04-12
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2020-03-15
      • 2018-08-26
      相关资源
      最近更新 更多