Итак, я всю ночь пытался заставить его работать, но, похоже, ничего не помогает ... Я продолжаю получать сообщение о том, что якорь доверия для пути сертификации не найден.
Вот как я создаю okhttpClient (я следовал https://medium.com/@sreekumar_av/certificate-public-key-pinning-in-android-using-retrofit-2-0-74140800025b)
fun provideOkHttpClient(): OkHttpClient {
val httpClientBuilder = OkHttpClient()
.newBuilder()
val logging = HttpLoggingInterceptor()
logging.level = if (BuildConfig.DEBUG)
HttpLoggingInterceptor.Level.BODY
else
HttpLoggingInterceptor.Level.NONE
val certificatePinner = CertificatePinner.Builder()
.add(HOST, SHA)
.build()
val connectionSpec = ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
connectionSpec.tlsVersions(TlsVersion.TLS_1_2).build()
val tlsSocketFactory = TLSSocketFactory()
return httpClientBuilder
.certificatePinner(certificatePinner)
.addNetworkInterceptor(logging)
.sslSocketFactory(tlsSocketFactory, tlsSocketFactory.systemDefaultTrustManager())
.connectionSpecs(Collections.singletonList(connectionSpec.build()))
.build()
}
Я получил ша так: openssl s_client -connect host:port | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc-base64
и вот TLSFacotry: https://gist.github.com/pollux-/fbcc74984e110bb49497faa2d0ed5ee1#file-tlssocketfactory-java
Я действительно не понимаю, почему это не работает в этот момент.
Любая помощь будет принята с благодарностью!