Java SSL跳过证书验证
SSL 跳过证书的在 Java 中其实蛮。你只需要在代码里通过配置一个自定义的 TrustManager,绕过默认的证书验证机制。SSLConnectionSocketFactory可以你自定义 SSL 连接,跳过证书验证。常见的做法就是创建一个没有验证功能的 HostNameVerifier。其实,多时候,尤其是在开发和测试环境中,你不想被 SSL 证书搞得头大,这种方法有效。下面是个例子:
SSLContext ctx = SSLContext.getInstance("TLS");
TrustManager tm = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
};
ctx.init(null, new TrustManager[] { tm }, new java.security.SecureRandom());
SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(ssf).build();
如果你经常需要这类问题,可以参考下文的一些文章,里面有更详细的解读和应用场景。使用时也要小心,生产环境中最好还是验证证书,避免安全隐患。
下载地址
用户评论