当前位置:首页 » 安卓系统 » 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

热点内容
谷歌play商店如何连接服务器 发布:2025-05-13 17:38:11 浏览:480
ssl认证服务器搭建 发布:2025-05-13 17:33:42 浏览:890
cpul2缓存 发布:2025-05-13 17:32:09 浏览:450
编译是语言的特点 发布:2025-05-13 17:31:36 浏览:583
原神怎么看服务器版本 发布:2025-05-13 17:09:14 浏览:73
java连接符 发布:2025-05-13 17:05:44 浏览:57
hadoop删除文件夹 发布:2025-05-13 17:00:14 浏览:509
sql数据库远程备份 发布:2025-05-13 16:48:13 浏览:528
app什么情况下找不到服务器 发布:2025-05-12 15:46:25 浏览:714
php跳过if 发布:2025-05-12 15:34:29 浏览:467