как использовать самозаверяющий ssl в пиннере сертификата ohttp - PullRequest
0 голосов
/ 07 марта 2019

я прикрепил свой сертификат ssl к okhttp со следующим кодом

fun getSSLClient(): OkHttpClient.Builder {
    val certificatePinner = CertificatePinner.Builder()
        .add("mydomain.com", "sha256/+yXkVIpjT60hWh4XxpPI27vC7dAPycxw7bYg/LR8Ebs=")
        .build()

    return OkHttpClient.Builder()
        .certificatePinner(certificatePinner)

}

Затем я использую этот метод в модернизации для предоставления экземпляра клиента okhttp, как показано ниже:

fun getLoginDisposable():LoginInterfaceService {
    val interceptor = HttpLoggingInterceptor()
    interceptor.level = HttpLoggingInterceptor.Level.BODY

    val client = radiSSLConfiguration.getSSLClient().addInterceptor(interceptor).build()
    val loginInterface = Retrofit.Builder().baseUrl(radiUrlConfiguration.getCloudServerUrl(this))
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .client(client)
    val loginDisposable = loginInterface.build().create<LoginInterfaceService>()
    return loginDisposable
}

Но когда я делаю запрос с модификацией, я получаю следующее исключение

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Что я должен сделать, чтобы удалить это исключение и заставить Android доверять моему самоподписанному ssl? Есть ли какая-либо конфигурация ohttp, которую мне нужно сделать, чтобы доверять моему самоподписанному ssl?

...