2016-10-05 1 views
0

Привет там Я пытаюсь реализовать сертификат прикрепляя с помощью HttpOk: https://square.github.io/okhttp/3.x/okhttp/okhttp3/CertificatePinner.htmlСертификат прикрепляя с помощью HttpOK

Может кто-нибудь дать мне представление о том, где я имел в виду поставить следующий код для того, чтобы получить сертификат пиннинга исключение?

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

Спасибо :)

ответ

0

Он должен идти туда, куда вы создаете клиент для вызовов веб-служб. Помните, что вы должны заменить открытый ключ открытым ключом вашего сервера.

+0

Это дает мне : android.os.NetworkOnMainThreadException ошибка. Вы знаете, что я делаю неправильно? – teiiluj

+0

Вы не должны запускать сетевые вызовы в основном потоке. Вы должны запустить этот код в некоторой фоновой задаче. Эта ошибка очень хорошо объясняется в этой ссылке: http://stackoverflow.com/questions/6343166/how-to-fix-android-os-networkonmainthreadexception – LoveForDroid

0

Вы должны добавить его, если вы сейчас строите OkHttpClient. В частности только строки, которые вы должны быть добавление к существующему коду

CertificatePinner certificatePinner = new CertificatePinner.Builder() 
    .add(hostname, "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") 
    .build(); 

...builder.certificatePinner(certificatePinner)... 

NetworkOnMainThreadException, вероятно, потому, что вы также сделать вызов в этой точке. Вы не хотите, чтобы сделать дополнительный вызов HTTP, вы просто хотите, это относится ко всем существующим вызовы поражающих publicobject.com

Если вы на Mac вы можете проверить с oksocial

$ brew install yschimke/tap/oksocial 
$ oksocial --certificatePin publicobject.com:sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA https://publicobject.com/robots.txt 
request failed 
javax.net.ssl.SSLPeerUnverifiedException: Certificate pinning failure! 
    Peer certificate chain: 
    sha256/afwiKY3RxoMmLkuRW1l7QsPZTJPwDS2pdDROQjXw8ig=: CN=publicobject.com, OU=PositiveSSL, OU=Domain Control Validated 
    sha256/klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=: CN=COMODO RSA Domain Validation Secure Server CA, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB 
    sha256/grX4Ta9HpZx6tSHkmCrvpApTQGo67CYDnvprLg5yRME=: CN=COMODO RSA Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB 
    Pinned certificates for publicobject.com: 
    sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 
    at okhttp3.CertificatePinner.check(CertificatePinner.java:187)