尝试使用服务器证书作为客户端证书使用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
?
答案 0 :(得分:1)
您可以通过执行
覆盖requestFactory
中的默认restTemplate
restTemplate.setRequestFactory(new MyCustomRequestFactory());
有关在请求工厂中设置SSLContext的示例,请查看org.springframework.http.client.SkipSslVerificationHttpRequestFactory
here。