记录一次Glide加载https图片报SSL问题
公司最近换了https证书,发现app图片无法加载了,看日志是SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found。解决方案:让glide不再校验。application加入。
·
公司最近换了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)
}
}
}
更多推荐




所有评论(0)