2016-12-14 45 views
4

我使用的是帶有OKHTTP3客戶端的Retrofit 1.9,我試圖添加認證鎖定。下面是相關代碼:使用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

我從我發送查詢的端點(serwer)獲得證書(sha1)。 – lesniak

+0

但他們(服務器)只給出證書 –

回答

6

有幾件事情要檢查,因爲你已經編輯了部件錯誤是常見的,我不能確定這些是否是你的問題,但是這兩個錯誤都不會導致沒有日誌的鎖定。

1)對於您的CertificatePinner中的hostname,請確保它只是主機名稱,如「www.example.com」,而不是網址「https://www.example.com」。
2)對於.setEndpoint("xxxxxxxxxxxx"),請確保您的端點是https,在http上沒有檢查到任何證書,因此沒有日誌。

+0

我的主機名不正確。謝謝! – lesniak