Я использую Okhttp для закрепления сертификата. Если я использую построитель сертификатов следующим образом
val certificatePinner = CertificatePinner.Builder()
.add("2.54.3.88", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")
.build()
builder.addInterceptor(interceptor)
.certificatePinner(certificatePinner)
Я получаю исключение Якорь доверия для пути сертификации не найден
Но перед закреплением сертификата, если я поставлю следующий код
val trustAllCerts: Array<TrustManager> = arrayOf(object : X509TrustManager {
override fun checkClientTrusted(chain: Array<out java.security.cert.X509Certificate>?, authType: String?) {
}
override fun checkServerTrusted(chain: Array<out java.security.cert.X509Certificate>?, authType: String?) {
}
override fun getAcceptedIssuers(): Array<out java.security.cert.X509Certificate>? = 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) {
builder.sslSocketFactory(sslSocketFactory, trustAllCerts.first() as X509TrustManager)
builder.hostnameVerifier { hostname, session -> true }
}
} catch (e: Exception) {
}
val certificatePinner = CertificatePinner.Builder()
.add("2.54.3.88", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")
.build()
builder.addInterceptor(interceptor)
.certificatePinner(certificatePinner)
Я получаю исключение ошибки закрепления сертификата следующим образом
Response Failure: Certificate pinning failure!
Peer certificate chain:
Pinned certificates for 2.54.3.88:sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
Согласно этому блогу в случае Исключение ошибки закрепления сертификата, Okhttp должен предоставить вам хэши открытого ключа сертификата сервера. Но я получаю пустой ответ в цепочке сертификатов Peer:
P.S: Приведенное выше имя хоста и открытый ключ SSL ненастоящие, но все же, даже если я использую настоящие, я получаю те же результаты.