本文在SpringBoot RestTemplate的基础上,介绍如何设置自定义的https客户端证书和把信任的服务器ca证书加到spring框架的证书信任管理器中。最近的工作中,遇到第三方服务的https不使用ca机构提供的证书,而是使用自定义的证书,同时客户端也要提供证书给服务器验证,如果只是简单地使用RestTemplate访问这些第三方服务,会有400 HTTPStatus错误。
普通的restTemplate
@Bean("restTemplate20s")
RestTemplate restTemplate20s() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
// 连接超时时间
requestFactory.setConnectTimeout(2000);
// 读取超时时间
requestFactory.setReadTimeout(20000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
// 解决中文乱码问题
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
return restTemplate;
}
自定义sslConfig的restTemplate
@Bean("restTemplate")
RestTemplate restTemplate() throws Exception {
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setConnectionRequestTimeout