使用OKHTTP3认证固定进行改造

时间:2016-12-14 10:54:31

标签: android ssl retrofit okhttp3 certificate-pinning

我正在使用带有OKHTTP3客户端的Retrofit 1.9,我正在尝试添加认证固定。以下是相关代码:

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 个答案:

答案 0 :(得分:8)

要检查的几件事情,因为您已经编辑了部件错误是常见的,我无法确定这些是否是您的问题,但是这两个错误都不会导致没有日志的固定。< / p>

1)对于hostname中的CertificatePinner,请确保它只是主机名,例如&#34; www.example.com&#34;,而不是网址&#34; https://www.example.com&#34 ;.
2)对于.setEndpoint("xxxxxxxxxxxx"),请确保端点为httpshttp上未检查证书,因此没有日志。