9

我正在使用带有 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 都不正确。谁能解释为什么?

4

1 回答 1

12

有几件事要检查,因为你已经编辑了这些部分,错误很常见,我不能确定这些是否是你的问题,但是这两个错误都会导致没有日志的固定。

1) 对于hostname您的CertificatePinner,确保它只是主机名,例如“www.example.com”,而不是网址“ https://www.example.com ”。
2) 对于.setEndpoint("xxxxxxxxxxxx"),请确保您的端点是https,没有检查任何证书,http因此没有日志。

于 2016-12-14T15:42:23.497 回答