okhttp - HTTP FAILED: javax.net.ssl.SSLPeerUnverifiedException: не удалось найти доверенный сертификат, который подписал сертификат:

Здравствуйте, я получаю это исключение при вызове конкретной Rest конечной точки, но я застрял на javax.net.ssl.SSLPeerUnverifiedException, я получаю это исключение только на уровне API 21 (Android 5.0).

мы также добавляем в наше приложение настраиваемый диспетчер доверия для http-клиента

fun OkHttpClient.Builder.ignoreAllSSLErrors(): OkHttpClient.Builder {
    val naiveTrustManager = object : X509TrustManager {
        override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
        override fun checkClientTrusted(certs: Array<X509Certificate>, authType: String) = Unit
        override fun checkServerTrusted(certs: Array<X509Certificate>, authType: String) = Unit
    }

    val insecureSocketFactory = SSLContext.getInstance("TLSv1.2").apply {
        val trustAllCerts = arrayOf<TrustManager>(naiveTrustManager)
        init(null, trustAllCerts, SecureRandom())
    }.socketFactory

    sslSocketFactory(insecureSocketFactory, naiveTrustManager)
    hostnameVerifier(HostnameVerifier { _, _ -> true })
    return this
}

и это stackTrace исключения:

D/OkHttp: <-- HTTP FAILED: javax.net.ssl.SSLPeerUnverifiedException: Failed to find a trusted cert that signed Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:
                13:ea:28:70:5b:f4:ec:ed:0c:36:63:09:80:61:43:36
        Signature Algorithm: sha384WithRSAEncryption
            Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
            Validity
                Not Before: May 30 10:48:38 2000 GMT
                Not After : May 30 10:48:38 2020 GMT
            Subject: C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust RSA Certification Authority

При необходимости я могу добавить больше деталей, спасибо


person Badr At    schedule 13.10.2020    source источник


Ответы (1)


Это связано с тем, что срок действия сертификата CA истек на старых устройствах. См. Как доверять сертификатам SSL срок действия корня с перекрестной подписью истек на android ‹= 5

Но неясно, почему ваши небезопасные настройки не работают. Вы не предоставили пригодную для использования репродукцию, поэтому трудно сделать больше, чем предположить.

person Yuri Schimke    schedule 13.10.2020