【发布时间】:2017-04-05 10:41:18
【问题描述】:
情况
我必须通过连接到具有自签名证书的测试服务器来测试应用程序。为此,我执行以下操作:
- 我正在使用 Spring 框架中的 RestTemplateBuilder 来创建 RestTemplate
- 我传入了自定义配置的 HttpClient,它应该忽略主机名验证。
问题
尽管有自定义的 http 客户端,我仍然得到 SSLPeerUnverifiedException。有什么线索吗?
代码
负责配置RestTemplate的部分代码:
public class RestTemplateForBasicAuth {
private RestTemplateBuilder restTemplateBuilder;
public RestTemplateForBasicAuth(RestTemplateBuilder restTemplateBuilder) {
this.restTemplateBuilder = restTemplateBuilder;
}
public RestTemplate getRestTemplate(String host) {
// Initialize http client that does not complain on self signed certificate
CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
HttpHost httpHost = new HttpHost(host);
final AuthHttpComponentsClientHttpRequestFactory requestFactory = new AuthHttpComponentsClientHttpRequestFactory(httpClient, httpHost, "user", "xxx");
restTemplateBuilder.requestFactory(requestFactory);
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
restTemplateBuilder.messageConverters(messageConverter);
return restTemplateBuilder.build();
}
}
【问题讨论】:
标签: java spring-boot apache-httpclient-4.x resttemplate