Spring RestTemplate调用HTTPS *而不使用* HttpClient

时间:2018-06-13 23:27:25

标签: spring-boot spring-security resttemplate

尝试使用服务器证书作为客户端证书使用RestTemplate进行REST调用以使用。

进行调用。

不要问我原因:-),但我不想使用Apache的HttpClient。我认为这太过分了。

我见过使用常规JDK SSLContext来设置系统范围的代码,即设置SSLContext和调用SSLContext.setDefault(sslContext),如下代码所示:

// ... keymanagers, trustmanagers are omitted here
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keymanagers, trustmanagers, new SecureRandom());
SSLContext.setDefault(sslContext);

但是,我在这里看到了一条GitHub评论(https://github.com/spring-projects/spring-boot/issues/6493),声明将SSLContext设置为默认值并不是一个好主意。

所以,我的问题是:除了必须使用HttpClient之外,有没有办法在sslContext设置中以某种方式使用上面代码段中配置的RestTemplate

1 个答案:

答案 0 :(得分:1)

您可以通过执行

覆盖requestFactory中的默认restTemplate
restTemplate.setRequestFactory(new MyCustomRequestFactory());

有关在请求工厂中设置SSLContext的示例,请查看org.springframework.http.client.SkipSslVerificationHttpRequestFactory here