在chrome中连接https时,有时被告知不是私密链接,手动可以继续。用java 代码进行https也遇到这种情况,可以 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
附完整可用代码
import org.glassfish.jersey.jackson.JacksonFeature; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import javax.ws.rs.client.*; import javax.ws.rs.core.MediaType; public class SensLevelHelper { public static void main(String[] args) throws Exception { ignoreSSLCert(); } public static void ignoreSSLCert() throws Exception { Client testClient = ClientBuilder.newBuilder() .sslContext(createIgnoreVerifySSL()) .hostnameVerifier((s1, s2) -> true).register(new JacksonFeature()).build(); WebTarget webTarget = testClient.target("https://******"); // 这个网址需要忽略SSL证书 System.out.println(webTarget.getUri()); Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); LogInHelper.PubKey publicKey = invocationBuilder.get(LogInHelper.PubKey.class); System.out.println(publicKey); } private static SSLContext createIgnoreVerifySSL() throws Exception { SSLContext sc = SSLContext.getInstance("TLSv1.3"); // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法 X509TrustManager trustManager = new X509TrustManager() { @Override public void checkClientTrusted( java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) { } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] paramArrayOfX509Certificate, String paramString) { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } }; sc.init(null, new TrustManager[]{trustManager}, null); return sc; } }
标签:void,public,SSL,https,import,ClientBuilder,javax,X509TrustManager From: https://www.cnblogs.com/panda4671/p/17999889