使用 restTemplate 调用三方 三方证书过期,跳过证书校验
事例代码:
/**
* post请求
*/
public <T> T getRestTemplate(Object json, String url, Class<T> tClass) {
log.info("开始调用远程服务");
log.info("url:{}", url);
log.info("json:{}", json);
log.info("[对接]开始");
String date = DateUtil.format(new Date(), DateUtil.DATE_TIME);
log.info("[对接]时间:{}", date);
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
HttpEntity<String> formEntity = new HttpEntity<>(json.toString(), headers);
T body = restTemplate.postForEntity(url, formEntity, tClass).getBody();
log.info("[对接接口返回],json:{}", body);
return body;
}
如上代码,三方证书过期会报错 解决如下
启动类中 注入bean 跳过校验就好了
@Bean
RestTemplate restTemplate() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
TrustStrategy acceptingTrustStrategy = (cert, authType) -> true;
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("https", sslsf).register("http", new PlainConnectionSocketFactory()).build();
BasicHttpClientConnectionManager connectionManager = new BasicHttpClientConnectionManager(
socketFactoryRegistry);
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf)
.setConnectionManager(connectionManager).build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
requestFactory.setConnectTimeout(10000);
requestFactory.setReadTimeout(10000);
return new RestTemplate(requestFactory);
}

当使用RestTemplate调用三方服务时,如果遇到证书过期的问题,可以通过配置自定义的SSLContext和TrustStrategy来跳过证书校验。在启动类中注入RestTemplate的Bean,设置SSLConnectionSocketFactory并启用NoopHostnameVerifier,从而实现不验证证书的HTTP请求。这种方法在证书出现问题时可以临时解决调用问题,但并不推荐用于生产环境。
900

被折叠的 条评论
为什么被折叠?



