Spring 保管库 SSLPeerUnverifiedException
Spring Vault SSLPeerUnverifiedException
我在 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-Vault
、Spring
、Spring-Boot
并使用 httpcomponents.httplient
4.5.10
或 4.5.12
这是由 HttpClient
版本 4.5.11
中引入的错误引起的。固定在 4.5.12
我在 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-Vault
、Spring
、Spring-Boot
并使用 httpcomponents.httplient
4.5.10
或 4.5.12
这是由 HttpClient
版本 4.5.11
中引入的错误引起的。固定在 4.5.12