Якорь доверия для пути сертификации не найден только в Android 5 - PullRequest
0 голосов
/ 16 января 2020

Я занимаюсь разработкой приложения. В какой-то момент я получаю данные со сторонних серверов, используя библиотеку JSoup, по HTTPS, без каких-либо проблем. Указанный веб-сайт использует TLS 1.2. Но в последнее время мне нужно было отправлять данные на персональный сервер, также через HTTPS, но с использованием TLS 1.3. Тем не менее, я получаю следующую ошибку:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324)
W/System.err: at com.android.okhttp.Connection.upgradeToTls(Connection.java:1285)
W/System.err: at com.android.okhttp.Connection.connect(Connection.java:1197)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:393)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:296)
W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:399)
W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:110)
W/System.err: at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
W/System.err: at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:25)
W/System.err: at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:730)
W/System.err: at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:705)
W/System.err: at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:295)

Тестирование на двух разных устройствах Я не получаю эту ошибку в последней версии Android (10), но я получаю ее на Android 5.0 0,2. Я предполагаю отсутствие поддержки TLS 1.3 в Android 5. Но опять же, как бы я go решил это. Это также может быть что-то еще, не стесняйтесь просветить меня.

Код более или менее следующий

Connection.Response loginPageGet =
Jsoup.connect(logURL.concat("log.php").concat("?")
        .concat("project=").concat(project)
        .concat("&version=").concat(version)
        .concat("&variant=").concat(variant)
        .concat("&user=").concat(user)
        .concat("&mode=").concat("1"))
        .method(Connection.Method.GET)
        .execute();

, который завершается неудачей из-за IOException

...