使用 OKHTTP3 认证固定进行改造
Retrofit with OKHTTP3 certification pinning
我正在将 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) 对于 CertificatePinner
中的 hostname
,请确保它只是主机名,例如 "www.example.com",而不是 url "https://www.example.com".
2) 对于 .setEndpoint("xxxxxxxxxxxx")
,确保你的端点是 https
,http
上没有检查证书,所以没有日志。
我正在将 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) 对于 CertificatePinner
中的 hostname
,请确保它只是主机名,例如 "www.example.com",而不是 url "https://www.example.com".
2) 对于 .setEndpoint("xxxxxxxxxxxx")
,确保你的端点是 https
,http
上没有检查证书,所以没有日志。