【发布时间】:2017-04-29 16:15:49
【问题描述】:
我正在使用带有 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 都不正确。谁能解释一下为什么?
【问题讨论】:
-
@lensniak 你能告诉我你是怎么得到别针的吗(“sha1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=”)
-
我从发送查询的端点(服务器)获得了证书(sha1)。
-
但他们(服务器)只提供证书
-
您可以从证书中读取证书指纹(sha1、sha256...)。工具:samltool.com/fingerprint.php 或 knowledge.symantec.com/support/identity-protection-support/…
标签: android ssl retrofit okhttp3 certificate-pinning