RestTemplate忽略SSL

@Bean
    public RestTemplate restTemplate() throws Exception {
        // 创建一个信任所有证书的 TrustManager
        TrustStrategy acceptAll = (x509Certificates, s) -> true;
        SSLContext sslContext = SSLContexts.custom()
                .loadTrustMaterial(null, acceptAll)
                .build();
        X509TrustManager trustManager = new TrustAllManager();
        sslContext.init(null, new TrustManager[]{trustManager}, null);
        SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
        CloseableHttpClient client = HttpClients.custom()
                .setSSLContext(sslContext)
                .setSSLSocketFactory(socketFactory)
                .build();
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setHttpClient(client);
        requestFactory.setConnectTimeout(5 * 60 * 1000);
        requestFactory.setReadTimeout(5 * 60 * 1000);
        // 创建 RestTemplate 并设置请求工厂
        RestTemplate restTemplate = new RestTemplate(requestFactory);
        return restTemplate;
    }

    private static class TrustAllManager implements X509TrustManager {

        @Override
        public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

        }

        @Override
        public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }
    }
posted @ 2025-03-04 16:15  骑白马走三关  阅读(70)  评论(0)    收藏  举报