2016-12-14 97 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