【问题标题】:RestTemplateBuilder with custom CloseableHttpClient still throws SSLPeerUnverifiedException带有自定义 CloseableHttpClient 的 RestTemplateBuilder 仍然抛出 SSLPeerUnverifiedException
【发布时间】:2017-04-05 10:41:18
【问题描述】:

情况

我必须通过连接到具有自签名证书的测试服务器来测试应用程序。为此,我执行以下操作:

  1. 我正在使用 Spring 框架中的 RestTemplateBuilder 来创建 RestTemplate
  2. 我传入了自定义配置的 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


    【解决方案1】:

    您是否使用了 Spring (Boot) 中的正确注解?

    至少如果它是 Spring Boot 应用程序,您必须使用 @Configuration 注释类和使用 @Bean 注释方法 getRestTemplate(...)

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 2018-10-08
      • 2011-11-25
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多