CertPathValidatorException : Trust anchor for certificate path not found - Retrofit Android

前端 未结 9 2026
庸人自扰
庸人自扰 2020-11-29 16:07

I am creating an android application which uses https for communication with the server. I am using retrofit and OkHttp for making req

9条回答
  •  半阙折子戏
    2020-11-29 16:14

    Here is Kotlin version.
    Thanks you :)

             fun unSafeOkHttpClient() :OkHttpClient.Builder {
                val okHttpClient = OkHttpClient.Builder()
                try {
                    // Create a trust manager that does not validate certificate chains
                    val trustAllCerts:  Array = arrayOf(object : X509TrustManager {
                        override fun checkClientTrusted(chain: Array?, authType: String?){}
                        override fun checkServerTrusted(chain: Array?, authType: String?) {}
                        override fun getAcceptedIssuers(): Array  = arrayOf()
                    })
    
                    // Install the all-trusting trust manager
                    val  sslContext = SSLContext.getInstance("SSL")
                    sslContext.init(null, trustAllCerts, SecureRandom())
    
                    // Create an ssl socket factory with our all-trusting manager
                    val sslSocketFactory = sslContext.socketFactory
                    if (trustAllCerts.isNotEmpty() &&  trustAllCerts.first() is X509TrustManager) {
                        okHttpClient.sslSocketFactory(sslSocketFactory, trustAllCerts.first() as X509TrustManager)
                        okHttpClient.hostnameVerifier { _, _ -> true }
                    }
    
                    return okHttpClient
                } catch (e: Exception) {
                    return okHttpClient
                }
            }
    

提交回复
热议问题