У меня есть приложение android, которое использует API. Базовый URL моего API: «akazemib.rahkaran.ir». Я использую клиент OkHttp напрямую с этим кодом:
new OkHttpClient.Builder()
.cookieJar(cookieJar)
.connectTimeout(CONNECTION_TIMEOUT, TimeUnit.MICROSECONDS)
.build();
Но я получил SSLHandshake: CertPathValidatorException. используемый нами сертификат действителен и получен от Certum Trusted Network CA, как показано ниже:
![enter image description here](https://i.stack.imgur.com/EXzG9.png)
Я пробовал настраиваемый Trust Manager и SslFactory и добавляю строку сертификата вручную и проблема решена
new OkHttpClient.Builder()
.cookieJar(cookieJar)
.connectTimeout(CONNECTION_TIMEOUT, TimeUnit.MICROSECONDS)
.sslSocketFactory(sslSocketFactory, trustManager)
.hostnameVerifier(OkHostnameVerifier.INSTANCE)
.build();
String certString = ""
+ "-----BEGIN CERTIFICATE-----\n" +
"MIIF0jCCBLqgAwIBAgIQaoGIm2LXLNbBk72jLNf5LTANBgkqhkiG9w0BAQsFADCB\n" +
"hTELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu\n" +
"QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEpMCcG\n" +
"A1UEAxMgQ2VydHVtIERvbWFpbiBWYWxpZGF0aW9uIENBIFNIQTIwHhcNMTcxMDEx\n" +......
Но как я могу исправить эту ошибку SSLHandshake без добавления сертификата вручную? что-то не так с CA? или промежуточный сертификат на стороне сервера?