如何使用Rest模板将TLS1.2强制为Rest客户端
问题内容:
我通过调用post方法使用Spring3.0 restTemplate使用json webservice。
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
HttpEntity<Object> entity = new HttpEntity<Object>(requestAsString, headers);
postForObject = restTemplate.postForObject(url, entity, responseClass );
我们的应用程序已部署在WAS服务器中,并尝试通过使用TLS1.0创建套接字连接来连接生产者。但是,现在生产者仅支持TLS1.1和TLS1.2。
如何强制执行restTempate以使用TLS1.1或TLS 1.2。
通常,对于apache
httpclient代码,创建自定义ProtocolSocketFactory并覆盖createSocket方法。但是,在RestTemplate的情况下,如何实现相同。
问题答案:
您可以配置RestTemplate使用自定义ClientHttpRequestFactory
。特别是(因为您使用的是Spring
3.0),所以有一个CommonsClientHttpRequestFactory。这将使您能够详细配置公共HTTP,而RestTemplate将使用它来执行其请求。
请注意,实际的实现类在Spring的更高版本中已更改(如果您仍在3.0上,则应该考虑更新)。从3.1开始,实现类被称为HttpComponentsClientHttpRequestFactory
。