Glide java.security.cert.CertificateException: java.security.cert.CertPathValidatorException问题解决

昨天我们的运维大哥更新了一个server.cer证书,这个我是事先不知道的,作为一个负责任的android开发者,当我查看线上app适配情况时,大吃一惊,图片呢,我的图片为什么就是不显示了呢,以前可是没问题的呀,查看了控制台日志信息,显示如下:


Glide java.security.cert.CertificateException: java.security.cert.CertPathValidatorException问题解决_第1张图片
image.png

Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

一眼看上去,像是报错了,但是却是在info日志级别里,但不管怎么样,是个信息,就顺着这个路线去查找,因为本身我的程序是做了https的适配工作,我不担心是我的问题,跟运维大哥(人挺好的)反馈下,他那边同意重新上传server.cer证书,结果上传完了就好了!

就好了

image.png

那就这样吧,如果各位遇到重新上传证书还是无法加载图片,那么可以参考以下解决办法:
忽略https的证书校验

在Application的onCreate中调用方法handleSSLHandshake()
    public static void handleSSLHandshake() {
        try {
            TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
                public X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[0];
                }

                @Override
                public void checkClientTrusted(X509Certificate[] certs, String authType) {
                }

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

            SSLContext sc = SSLContext.getInstance("TLS");
            sc.init(null, trustAllCerts, new SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            });
        } catch (Exception ignored) {
        }
    }

但是这样展示治标不治本,无异于掩耳盗铃,根本的解决办法还是需要后台和运维大哥上传合法的证书,通过应用验证。
好了,就写到这里吧

你可能感兴趣的:(Glide java.security.cert.CertificateException: java.security.cert.CertPathValidatorException问题解决)