SSLPinning

Ссылки

SSLPinning (делается через OkHTTP: сначала проверяем серт через okhttp, потом делаем запрос через ретрофит) https://proandroiddev.com/configuring-retrofit-2-client-in-android-130455eaccbd

OkHTTP Client SSL Pinning ex: https://www.codota.com/code/java/methods/okhttp3.OkHttpClient$Builder/sslSocketFactory

SSL Pinning: CA - доверенный

С добавлением SSL Pinning'а есть нюансы. Если сертификат сервера подписан у доверенного CA, то пиннинг в приложении делается очень просто:

val client = OkHttpClient().newBuilder()
httpClient.certificatePinner(
    CertificatePinner.Builder()
        .add("publicobject.com", "sha256//r8udi/Mxd6pLO7y7hZyUMWq8YnFnIWXCqeHsTDRqy8=")
        .build()
)
...

SSL Pinning: CA - self-signed

Однако, в случае самоподписанного сертификата сервера, TLS соединение не будет установлено: будет ошибка "trust anchor for certification path not found"

В этом случае надо добавлять свой TrustManager и настраивать sslSocketFactory с сертом сервера.

Пример TrustManager с полным доверием всем сертам

(в этом случае sslpinning как в примере выше не сработает (ведь мы всем сертам доверяем))

Пример TrustManager с доверием только сертификату нашего сервера

Общий пример здесь: https://square.github.io/okhttp/https/

Last updated

Was this helpful?