当前位置:首页 » 安卓系统 » android证书https

android证书https

发布时间: 2023-03-12 07:44:03

❶ android 怎么信任https

因为最近公司的open api服务器访问协议换成了https,所以 android 在使用okhttp 走https 访问的时候遇到了证书信任的问题,
在这里把我走过的弯路记下来,一如既往的话不多说,上码:
OkHttpClient sClient = new OkHttpClient();

// 设置超时时间
sClient.setConnectTimeout(8000, TimeUnit.MILLISECONDS);
sClient.setReadTimeout(8000, TimeUnit.MILLISECONDS);
// 注册拦截器
sClient.interceptors().add(new BaseInterceptor(context));

第一种方式:
sClient.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

运行结果:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
11-26 11:17:57.264 17106-17268/com.dooioo.addressbook W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410)
11-26 11:17:57.264 17106-17268/com.dooioo.addressbook W/System.err: at com.squareup.okhttp.Connection.connectTls(Connection.java:235)
11-26 11:17:57.264 17106-17268/com.dooioo.addressbook W/System.err: at com.squareup.okhttp.Connection.connectSocket(Connection.java:199)
11-26 11:17:57.264 17106-1726

❷ android okhttp https请求

 忽略SSL证书的方法

//获取TrustManager

    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[]{};

                        //OKhttp3.0以前返回null,3.0以后返回new X509Certificate[]{};

                    }

                }

        };

        return trustAllCerts;

    }

//获取这个SSLSocketFactory

    //通过这个类我们可以获得SSLSocketFactory,这个东西就是用来管理证书和信任证书的

    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);

        }

    }

//获取HostnameVerifier

    public static HostnameVerifier getHostnameVerifier() {

        HostnameVerifier hostnameVerifier = new HostnameVerifier() {

            @Override

            public boolean verify(String s, SSLSession sslSession) {

                //未真正校检服务器端证书域名

                return true;

            }

        };

        return hostnameVerifier;

    }

public OkHttpClient getOkHttpClient() {

        if (mOkHttpClient == null) {

            mOkHttpClient = new OkHttpClient.Builder()

                    .connectTimeout(15, TimeUnit.SECONDS)

                    .sslSocketFactory(new SSLSocketClient().getSSLSocketFactory())//配置

                    .hostnameVerifier(new SSLSocketClient().getHostnameVerifier())//配置

                    // .readTimeout(10, TimeUnit.SECONDS)

                    .build();

        }

        return mOkHttpClient;

    }

原文链接: Android https请求证书处理

❸ android https自签名证书和机构颁发证书的区别

1、https自签名证书,免费,可自己生成,不受浏览器信任,没有第三方监管,容易被仿造,存在安全风险。
2、证书颁发机构,权威、合法第三方证书颁发管理机构CA,需要准入许可证,颁发的SSL证书安全可行,提供长期的技术支持和售后服务,提供高额的保险。
3、关于证书颁发机构的介绍:http://www.wosign.com/CA/index.html

热点内容
vmwarelinux教程 发布:2025-07-01 14:50:33 浏览:496
名词解释预算法 发布:2025-07-01 14:34:36 浏览:915
iis文件拒绝访问 发布:2025-07-01 14:34:20 浏览:567
苹果和安卓相比哪个游戏多 发布:2025-07-01 14:24:16 浏览:759
锐界七座买哪个配置好 发布:2025-07-01 14:14:59 浏览:980
svn下载linux 发布:2025-07-01 14:10:38 浏览:733
苹果手机打游戏和安卓哪个流畅 发布:2025-07-01 13:58:41 浏览:844
中原证券服务器怎么样 发布:2025-07-01 13:57:23 浏览:1000
在简便算法 发布:2025-07-01 13:32:06 浏览:766
c语言表达式绝对值 发布:2025-07-01 13:25:45 浏览:491