OkHttp3,翻新和证书钉扎:如何使钉扎失效

问题描述 投票:1回答:2

在我的Android应用程序中,我需要使用证书固定。我正在使用RetrofitOkHttp3来使用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具有所需的行为?

提前感谢

android ssl okhttp certificate-pinning
2个回答
0
投票

您正在寻找的功能根据以下增强功能在OKHTTP中仍然不可用。

https://github.com/square/okhttp/issues/3010


0
投票

是否有一种方法可以告诉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。例如,您可以使用建议的日期比较。

© www.soinside.com 2019 - 2024. All rights reserved.