/** * 跳過證書效驗的sslcontext * @return * @throws Exception */ private static SSLContext createIgnoreVerifySSL() throws Exception { SSLContext sc = SSLContext.getInstance("TLS"); // 實現一個X509TrustManager接口,用於繞過驗證,不用修改里面的方法 X509TrustManager trustManager = new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) throws CertificateException { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } }; sc.init(null, new TrustManager[] { trustManager }, null); return sc; } /** * 構造RestTemplate * @return * @throws Exception */ private static RestTemplate getRestTemplate() throws Exception { HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); //超時 factory.setConnectionRequestTimeout(5000); factory.setConnectTimeout(5000); factory.setReadTimeout(5000); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( createIgnoreVerifySSL(), // 指定TLS版本 null, // 指定算法 null, // 取消域名驗證 new HostnameVerifier(){ @Override public boolean verify(String string, SSLSession ssls) { return true; } } ); CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf) .build(); factory.setHttpClient(httpClient); RestTemplate restTemplate = new RestTemplate(factory); // 解決中文亂碼問題 restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); return restTemplate; }