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

热点内容
sql时间戳转换日期 发布:2025-07-02 03:07:46 浏览:118
云存储服务器架设 发布:2025-07-02 03:04:10 浏览:33
求串场的算法 发布:2025-07-02 02:58:27 浏览:550
当前urlphp 发布:2025-07-02 02:49:17 浏览:933
哪里学习编程 发布:2025-07-02 02:33:51 浏览:162
我的世界商店服务器刷钱 发布:2025-07-02 02:28:55 浏览:150
知道ip怎么入侵服务器啊 发布:2025-07-02 02:13:17 浏览:145
c语言手机编译 发布:2025-07-02 02:12:33 浏览:735
安卓快充协议是什么意思 发布:2025-07-02 02:07:00 浏览:898
androidbutton颜色设置 发布:2025-07-02 01:41:28 浏览:270