2016-12-14 4 views
4

Я использую Retrofit 1.9 с клиентом OKHTTP3, и я пытаюсь добавить сертификацию. Ниже приведен соответствующий код:Модернизация с сертификацией OKHTTP3

String hostname = "xxxxxx.xx"; 

CertificatePinner certificatePinner = new CertificatePinner.Builder() 
    .add(hostname, "sha1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=") 
    .build(); 

OkHttpClient client = new OkHttpClient.Builder() 
    .certificatePinner(certificatePinner) 
    .build(); 

return new RestAdapter.Builder() 
    .setRequestInterceptor(request -> { 
     request.addHeader("CONTENT-TYPE", "application/json"); 
    }) 
    .setEndpoint("https://xxxxxxxxxxxx"). 
    .setClient(new Ok3Client(client)) 
    .build(); 

К сожалению, он не работает. У меня нет

"javax.net.ssl.SSLPeerUnverifiedException: Certificate pinning failure!" 

исключение и даже мой хост или SHA неверен. Может ли кто-нибудь объяснить, почему?

+1

@lensniak могли бы вы сказать мне, как вы получили булавки («sha1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx =») –

+0

я получил сертификат (sha1) от конечной точки (Серуэр), к которым я посылаю запросы. – lesniak

+0

Но они (сервер) дают только сертификат –

ответ

6

Пара вещей, которые нужно проверить, поскольку вы отредактировали части, были ошибки, но я не могу точно сказать, что это вы делаете, но обе ошибки не приведут к фиксации без журналов.

1) Для hostname в вашем CertificatePinner, убедитесь, что это просто имя хоста, как «www.example.com», а не URL «https://www.example.com».
2) Для .setEndpoint("xxxxxxxxxxxx"), убедитесь, что конечная точка https, нет сертификатов на http, поэтому нет журналов.

+0

Мое имя было неправильным , Спасибо! – lesniak

Смежные вопросы