在我的Android应用程序中,我需要使用证书固定。我正在使用Retrofit
和OkHttp3
来使用Web服务,并且已经定义了证书哈希码的固定。
CertificatePinner certificatePinner = new CertificatePinner.Builder()
.add("dummy.com", "sha256/xxxxxxxxxx=")
.build();
OkHttpClient httpClient = new OkHttpClient.Builder()
.certificatePinner(certificatePinner)
.callTimeout(240, TimeUnit.SECONDS)
.readTimeout(240, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
Retrofit retrofitKripton = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(KriptonBinderConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.client(httpClient).build();
我想强制将证书固定到证书到期,之后,我只想避免证书固定(这是由于我要避免证书到期后应用程序停止工作的事实)。是否有一种方法可以告诉OkHpttp3/Retrofit
具有所需的行为?
预先感谢
答案 0 :(得分:3)
有没有一种方法可以告诉OkHpttp3 / Retrofit具有所需的行为?
您可以自己做:
OkHttpClient.Builder = new OkHttpClient.Builder();
if (applyPins()) {
CertificatePinner certificatePinner = new CertificatePinner.Builder()
.add("dummy.com", "sha256/xxxxxxxxxx=")
.build();
builder..certificatePinner(certificatePinner);
}
OkHttpClient httpClient = builder
.callTimeout(240, TimeUnit.SECONDS)
.readTimeout(240, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
Retrofit retrofitKripton = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(KriptonBinderConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.client(httpClient).build();
将applyPins()
实施为一种方法,如果您要应用引脚,则返回true
,否则返回false
。例如,您可以使用建议的日期比较。
答案 1 :(得分:1)
根据以下增强功能,您正在寻找的功能在OKHTTP中仍然不可用。