美文网首页
java屏蔽https验证

java屏蔽https验证

作者: Planet_2d42 | 来源:发表于2019-04-09 13:34 被阅读0次

当需要访问https网址,同时该网站证书又不受信的情况下的解决办法

手动创建一个通过所有https的httpclient

package com.ttd.video.monarch.utils;

import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;

@SuppressWarnings("deprecation")
public class SSLClient extends DefaultHttpClient {
    public SSLClient() throws Exception{
        super();
        SSLContext ctx = SSLContext.getInstance("TLS");
        X509TrustManager tm = new X509TrustManager() {
                @Override
                public void checkClientTrusted(X509Certificate[] chain,
                        String authType) throws CertificateException {
                }
                @Override
                public void checkServerTrusted(X509Certificate[] chain,
                        String authType) throws CertificateException {
                }
                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
        };
        ctx.init(null, new TrustManager[]{tm}, null);
        SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        ClientConnectionManager ccm = this.getConnectionManager();
        SchemeRegistry sr = ccm.getSchemeRegistry();
        sr.register(new Scheme("https", 443, ssf));
    }
}
  • 在需要跳过验证https的地方使用该SSLClient
HttpClient httpClient = new SSLClient();
HttpResponse response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200) {
  httpPost.abort();
throw new RuntimeException("HttpClient,error status code :" + statusCode);
}
HttpEntity entity = response.getEntity();
String result = null;
if (entity != null) {
  result = EntityUtils.toString(entity, "utf-8");
}
EntityUtils.consume(entity);
httpClient.getConnectionManager().shutdown();

相关文章

  • java屏蔽https验证

    当需要访问https网址,同时该网站证书又不受信的情况下的解决办法 手动创建一个通过所有https的httpcli...

  • MongoDB - 安全设置

    基于账号的验证登录 屏蔽conf的security 创建超级用户 规则 参考 https://docs.mongo...

  • 设置java程序的可信任证书

    概述 java程序访问https内容时,会验证https服务器提供的证书的有效性,java程序默认使用$JAVA_...

  • Nginx配置https Java代码单向验证

    最近要用到Nginx配置https转发http的功能,配置是很简单,然而用Java验证时总出现各种问题,这里记录一...

  • 新加坡NRIC验证

    JS 验证 Java 验证

  • Android中文和Unicode互转工具类

    Kotlin Java 转换后,可以通过这个工具网站进行验证:https://www.bejson.com/con...

  • 屏蔽HTTPS证书校验

    屏蔽HTTPS证书校验 ————————————————————————————————————————— 背景需...

  • https证书验证

    废话开篇:https 证书是什么?如何进行认证呢?带着这些疑问来简单的实现一下验证过程 简单的了解一下 https...

  • HTTPS

    单向HTTPS验证 双向HTTPS验证

  • JMM 简介及 volatile 的说明

    个人博客地址:https://huanxi.pub 为了屏蔽各个操作系统和硬件的差异,使得 Java 程序在所有平...

网友评论

      本文标题:java屏蔽https验证

      本文链接:https://www.haomeiwen.com/subject/oiebiqtx.html