在okhttp3,WebView中忽略HTTPS证书校验

在APP开发过程中,后台使用的可能是自签的Https证书,如果不忽略证书校验,会出现Trust anchor for certification path not found的错误

Okhttp3忽略HTTPS证书校验

import java.security.SecureRandom;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class SSLSocketClient {

    public static SSLSocketFactory getSSLSocketFactory() {
        try {
            SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, getTrustManager(), new SecureRandom());
            return sslContext.getSocketFactory();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    private static TrustManager[] getTrustManager() {
        TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(X509Certificate[] chain, String authType) {
                    }

                    @Override
                    public void checkServerTrusted(X509Certificate[] chain, String authType) {
                    }

                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[]{};
                    }
                }
        };
        return trustAllCerts;
    }

    public static HostnameVerifier getHostnameVerifier() {
        HostnameVerifier hostnameVerifier = new HostnameVerifier() {
            @Override
            public boolean verify(String s, SSLSession sslSession) {
                return true;
            }
        };
        return hostnameVerifier;
    }
}
sClient = new OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .readTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(10, TimeUnit.SECONDS)
        .sslSocketFactory(SSLSocketClient.getSSLSocketFactory())
        .hostnameVerifier(SSLSocketClient.getHostnameVerifier())
        .build();

WebView忽略HTTPS证书校验

        wv.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                handler.proceed();//忽略证书错误继续加载页面
            }
        });

原文地址:https://www.cnblogs.com/Potato-Eater/p/9792725.html

时间: 2024-11-05 23:36:03

在okhttp3,WebView中忽略HTTPS证书校验的相关文章

我的Android进阶之旅------>Android关于HttpsURLConnection一个忽略Https证书是否正确的Https请求工具类

下面是一个Android HttpsURLConnection忽略Https证书是否正确的Https请求工具类,不需要验证服务器端证书是否正确 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEn

Retrofit+OKHttp忽略https证书验证

记录这个的原因,是因为很多时候,因为后台配置的证书不正确导致APP访问不到服务器数据,导致影响自身的开发进度.没几行代码,逻辑也清晰,所以下面就直接贴出工具类吧: 1 package huolongluo.yeshen.byw.injection.model; 2 3 import java.security.SecureRandom; 4 import java.security.cert.X509Certificate; 5 6 import javax.net.ssl.HostnameVe

Loadrunner中对https证书的配置

1.先访问要压测的网站地址,从浏览器中将证书导出,或者直接找开发人员要这个证书: 一般证书是cer格式: 2.因为loadrunner只支持pem格式的证书,所以要将证书转换格式: 这里就需要用到openssl工具,进入cmd命令窗口,进入openssl的安装目录,输入命令将证书转换为pem格  式,详情请参考上面两篇博文: 转换方法如下: a)        安装openssl后 b)        运行C:\<OpenSSL>/bin文件夹的openssl二进制文件,它将启动OpenSSL

我们来一起说说HTTPS中间人攻击与证书校验

一.前言 随着安全的普及,https通信应用越发广泛,但是由于对https不熟悉导致开发人员频繁错误的使用https,例如最常见的是未校验https证书从而导致"中间人攻击",并且由于修复方案也一直是个坑,导致修复这个问题时踩各种坑,故谨以此文简单的介绍相关问题. 本文第一节主要讲述https的握手过程,第二节主要讲述常见的"https中间人攻击"场景,第三节主要介绍证书校验修复方案,各位看官可根据自己口味浏览. 二.HTTPS握手过程 首先来看下https的工作原

解决ImageLoader加载HTTPS图片证书校验异常问题

在某个项目开发过程中发现使用Universal-Image-Loader无法加载Https图片资源,查看日志发现原来是证书校验失败. 查看源码发现,ImageLoader中可以通过继承BaseImageDownloader重写下载部分逻辑,实现如下 1 public class AuthImageDownloader extends BaseImageDownloader { 2 3 public static final String TAG = AuthImageDownloader.cla

把https网站中的安全证书导入到java中的cacerts证书库

今天进行tomcat迁服后,程序部告诉我https证书未导入,知道将https进行了导入操作,在这里记录一下 在nginx服务器下将证书的pki文件复制到tomcat服务器中 scp /usr/local/nginx/conf/serer.cer [email protected]:~/ 然后通过导入指令将证书导入到java中  keytool -import -alias cacerts -keystore /usr/java/jdk1.7.0_40/jre/lib/security/cace

CentOS6.5 下在Nginx中添加SSL证书以支持HTTPS协议访问

参考文献: 1. NginxV1.8.0安装与配置 2. CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问 3. nginx配置ssl证书的方法 4.nginx强制使用https访问(http跳转到https) 5.nginx ssl 107 (net::ERR_SSL_PROTOCOL_ERROR) 无法与服务器建立安全连接 解决方法 配置过程如下: 我的nginx是 yum 安装 具体安装过程参考:[转]CENTOS 6.5 配置YUM安装NGINX+服务器负载均衡 一.安

自制Https证书并在Spring Boot和Nginx中使用(转)

白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环境中服务器端的配置. 如果你还没有读过白话Https,我强烈建议你先去读一下.按照白话Https中的介绍,Https协议涉及到的主体主要有三个:客户端.服务端.以及CA机构.如下图所示: 在白话Https一文中,曾介绍一个服务要申请使用Https的流程.本文所介绍的流程,针对自制Https证书,更多

设置chrome忽略网站证书错误

最近换了window10的系统后用浏览器访问网页的时候,经常出现网站证书错误的情况,特别是以https://开头的,原因是google升级证书检查力度后无法忽视证书错误的访问,解决这个问题很简单,只需要修改平时用来启动chrome的快捷方式就可以忽略掉证书错误. 1,针对于360急速浏览器的错误展示,虽然可以点击仍然继续就可以单次继续访问,但每次点击真头疼 具体的操作方法是这样的: 找到你的Chrome快捷方式. 右键图标,选择属性 找到"目标"文本框,里面的内容是你的Chrome程序