主要问题是SSL域名未认证,临时处理一下可以。无视SSL认证配置。
原因是有一个TLS SSL安全认证的协议。
网上找了很多事例,很多都不能用。亲测可用。这只是临时使用,生产环境还是要配置密钥比较好,正规流程还是得走的。
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate getRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
.loadTrustMaterial(null, acceptingTrustStrategy)
.build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
requestFactory.setConnectionRequestTimeout(6000);
requestFactory.setConnectTimeout(6000);
requestFactory.setReadTimeout(6000);
return new RestTemplate(requestFactory);
}