Spring Vault SSLPeerUnverifiedException

问题描述 投票:0回答:1

我有一个在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.httplient 4.5.11上。我可以使用Spring-VaultSpringSpring-Boot的最新版本并使用httpcomponents.httplient 4.5.104.5.12]来使其正常工作

我有一个在Spring Boot中运行的应用程序,使用Spring Vault检索密码。它使用KubernetesAuthentication进行登录。在我升级到Spring Boot 2.2.5之前,它一直运行良好。然后,我...

spring spring-boot apache-httpcomponents spring-vault
1个回答
0
投票

这是由HttpClient版本4.5.11中引入的错误引起的。固定在4.5.12

© www.soinside.com 2019 - 2024. All rights reserved.