公司最近换了https证书,发现app图片无法加载了,看日志是SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found。
解决方案:让glide不再校验
application加入 Glide.get(this).registry.replace(GlideUrl::class.java, InputStream::class.java,OkHttpUrlLoader.Factory (getNoCheckOkHttpClient()!!))
fun getNoCheckOkHttpClient(): OkHttpClient? { val ssl: SSLSocketFactory = getNoCheckSSLSocketFactory()!! val trustManager: X509TrustManager = getTrustManager()!! return OkHttpClient.Builder() .connectTimeout(TimeUnit.SECONDS.toMillis(30), TimeUnit.SECONDS) .readTimeout(TimeUnit.SECONDS.toMillis(30), TimeUnit.SECONDS) .writeTimeout(TimeUnit.SECONDS.toMillis(30), TimeUnit.SECONDS) .sslSocketFactory(ssl, trustManager) .hostnameVerifier(HostnameVerifier { hostname: String?, session: SSLSession? -> true }) .retryOnConnectionFailure(true) .build() } fun getNoCheckSSLSocketFactory(): SSLSocketFactory? { return try { val sslContext: SSLContext = SSLContext.getInstance("SSL") sslContext.init(null, arrayOf<TrustManager>(getTrustManager()!!), SecureRandom()) sslContext.getSocketFactory() } catch (e: java.lang.Exception) { throw RuntimeException(e) } } fun getTrustManager(): X509TrustManager? { return object : X509TrustManager { override fun checkClientTrusted(serverX509Certificates: Array<X509Certificate?>?, s: String?) {} override fun checkServerTrusted(x509Certificates: Array<X509Certificate?>?, s: String?) {} override fun getAcceptedIssuers(): Array<X509Certificate?>? { return arrayOfNulls(0) } } }