OkHttp3, дооснащение и закрепление сертификата: как дать истечение срока закрепления - PullRequest
2 голосов
/ 15 октября 2019

В моем приложении для Android мне нужно использовать закрепление сертификата. Я использую Retrofit и OkHttp3 для использования веб-службы и уже определяю закрепление на хэш-коде сертификата.

CertificatePinner certificatePinner = new CertificatePinner.Builder()
                .add("dummy.com", "sha256/xxxxxxxxxx=")
                .build();     

OkHttpClient httpClient = new OkHttpClient.Builder()
        .certificatePinner(certificatePinner)
        .callTimeout(240, TimeUnit.SECONDS)
        .readTimeout(240, TimeUnit.SECONDS)
        .retryOnConnectionFailure(true)
       .build();


Retrofit retrofitKripton = new Retrofit.Builder()
        .baseUrl(baseUrl)
        .addConverterFactory(KriptonBinderConverterFactory.create())
        .addConverterFactory(ScalarsConverterFactory.create())
        .client(httpClient).build();

Я хочу принудительно закрепить закрепление сертификата до истечения срока действия сертификата, после этого яхочу просто избежать закрепления сертификата (это связано с тем, что я хочу, чтобы приложение перестало работать после истечения срока действия сертификата). Есть ли способ сказать OkHpttp3/Retrofit, чтобы он вел себя как следует?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 15 октября 2019

Есть ли способ сообщить OkHpttp3 / Retrofit о желаемом поведении?

Вы можете сделать это самостоятельно:

OkHttpClient.Builder = new OkHttpClient.Builder();

if (applyPins()) {
    CertificatePinner certificatePinner = new CertificatePinner.Builder()
                    .add("dummy.com", "sha256/xxxxxxxxxx=")
                    .build();     

    builder..certificatePinner(certificatePinner);
}


OkHttpClient httpClient = builder
        .callTimeout(240, TimeUnit.SECONDS)
        .readTimeout(240, TimeUnit.SECONDS)
        .retryOnConnectionFailure(true)
       .build();

Retrofit retrofitKripton = new Retrofit.Builder()
        .baseUrl(baseUrl)
        .addConverterFactory(KriptonBinderConverterFactory.create())
        .addConverterFactory(ScalarsConverterFactory.create())
        .client(httpClient).build();

Реализовать applyPins() какметод, который возвращает true, если вы хотите применить выводы, false в противном случае. Например, вы можете использовать предложенное сравнение дат.

1 голос
/ 15 октября 2019

Функция, которую вы ищете, по-прежнему недоступна в OKHTTP в соответствии с приведенным ниже улучшением.

https://github.com/square/okhttp/issues/3010

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...