2016-12-14 2 views
4

Ich bin mit Retrofit 1.9 mit OKHTTP3 Client, und ich versuche Zertifizierung Pinning hinzuzufügen. Unten ist der entsprechende Code:Retrofit mit OKHTTP3 Zertifizierung Pinning

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(); 

Leider scheint es nicht zu funktionieren. Ich habe nicht die Ausnahme und sogar mein Host oder SHA ist falsch.

Kann mir jemand erklären warum?

+1

@lensniak könnten Sie mir sagen, wie Sie Stifte bekommen ("sha1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx =") –

+0

Ich habe das Zertifikat (sha1) vom Endpunkt (Server), an den ich Abfragen senden. – lesniak

+0

Aber sie (Server) geben nur Zertifikat –

Antwort

6

Ein paar Dinge zu überprüfen, da Sie die Teile unkenntlich gemacht haben, waren Fehler sind häufig, ich nicht mit Sicherheit sagen kann, wenn diese Sie ausgeben, aber beiden Fehler werden kein Pinning ohne Protokolle führen.

1) Für hostname in Ihrem CertificatePinner, stellen Sie sicher, dass es nur der Hostname, wie "www.example.com", und kein url "https://www.example.com".
2) Für .setEndpoint("xxxxxxxxxxxx"), stellen Sie sicher, dass Sie Endpunkt https ist, gibt es keine geprüft certs auf http also keine Protokolle.

+0

Mein Hostname war falsch . Danke! – lesniak

Verwandte Themen