import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
public class test {
private static int connectTimeOut == 30 * 1000;
private static int readTimeout = 300 * 1000;
@Bean("httpsTemplate")
public RestTemplate httpsRestTemplate() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
return new RestTemplate(generateHttpRequestFactory(connectTimeOut,readTimeout));
}
public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory(int connectTimeOut, int readTimeOut)
throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException {
TrustStrategy acceptingTrustStrategy = (x509Certificates, authType) -> true;
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(csf).build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setHttpClient(httpClient);
factory.setConnectTimeout(connectTimeOut);
factory.setReadTimeout(readTimeOut);
return factory;
}
}
构建RestTemplate解决 https证书问题
于 2023-03-02 20:15:07 首次发布
该代码示例展示了如何在Spring应用中创建一个RestTemplate实例,用于处理HTTPS连接,同时跳过SSL证书验证。通过自定义SSLContext,TrustStrategy接受所有证书,并设置超时时间。
摘要由CSDN通过智能技术生成