2017-02-21 3 views
0

Meine Frage ist, dass muss ich eine separate Anfrage vor jeder Get/Post AnfrageSSL Pinning in derselben Anfrage

OkHttpClient client = new OkHttpClient.Builder().certificatePinner(
       new CertificatePinner.Builder() 
         .add(pinningUrl, "sha256/invalidPIN") 
         .build()).build(); 
Request request = new Request.Builder() 
       .url(pinningUrl) 
       .build(); 
Response response = client.newCall(request).execute(); 

zu überprüfen SSL Pinning machen oder kann ich überprüfen Sie es mit jedem Get/Post wie diese

CertificatePinner certificatePinner = new CertificatePinner.Builder() 
         .add(pinningUrl, "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")     .build(); 
       OkHttpClient client = new OkHttpClient().newBuilder().certificatePinner(certificatePinner).build(); 
Request request = new Request.Builder()   .url(getResources().getString(R.string.server_url_user_mgmt_services)) 
         .addHeader("Content-Type", "application).post(body) 
         .build(); 

       client.newCall(request) 
         .enqueue(new Callback() { 

          @Override 
          public void onFailure(Call call, IOException e) { 
           pd.dismiss(); 
           Toast.makeText(LoginActivity.this, "Some error occured!\nTry Again", Toast.LENGTH_SHORT).show(); 
          } 

          @Override 
          public void onResponse(Call call, Response response) throws IOException { 
           String str = response.body().toString(); 
          } 
         }); 

Wenn ich es bei jeder Anfrage überprüfe, wird die Anfrage ausgeführt, aber es wird nicht nach certificate gesucht. Hilf mir dabei.

Antwort

2

Basierend auf Ihrem ersten Codebeispiel sieht es so aus, als ob Sie versuchen würden, eine URL anstelle eines Hostnamens oder Platzhalters anzuheften.

Sie sollten es einmal auf Ihrem OkHttpClient pro Host konfigurieren und dann nur Ihre normalen Anfragen machen. Die Pins, die Sie definieren, sollten den Host als Schlüssel haben, nicht die URL.

https://square.github.io/okhttp/3.x/okhttp/okhttp3/CertificatePinner.html

String hostname = "publicobject.com"; 
CertificatePinner certificatePinner = new CertificatePinner.Builder() 
    .add(hostname, "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") 
    .build(); 
OkHttpClient client = OkHttpClient.Builder() 
    .certificatePinner(certificatePinner) 
    .build(); 

Request request = new Request.Builder() 
    .url("https://" + hostname) 
    .build(); 
client.newCall(request).execute(); 
Verwandte Themen