的Android - 证书与改造2.3和OkHTTP

问题描述:

你好,亲爱的开发商,钢钉的Android - 证书与改造2.3和OkHTTP

我有以下问题:使用证书钢钉成功,因为现在几个月

I'm,与OkHTTP 3.6和1.9改造。 0。

最近我更新了使用的Retrofit版本到2.3.0,并使用OkHttp 3.8开始。由于更新证书锁定不再适用于AN 4.1和AN 6.0之间的设备。

我试过使用不同的OkHTTP版本,但没有运气。此外,我试图通过gradle强制使用特定的OkHTTP版本,但这并没有改变任何东西。

这里我们使用钢钉代码:

public CertificatePinner provideCertificatePinner(@PinForDomain(DEUTSCHE_POST) final PinnedDomain deutschePost, @PinForDomain(NOVOMIND) final PinnedDomain novomindPin, @PinForDomain(EMMI) final PinnedDomain emmiPin) { 
    Log.d(LOG_TAG, "Creating CertificatePinner"); 
    final CertificatePinner.Builder builder = new CertificatePinner.Builder(); 
    builder.add("www.url.com", "sha256Key"); 
    return builder.build(); 
} 

public OkHttpClient provideOkHttpClient(CertificatePinner pinner) { 

    Log.d(LOG_TAG, "Creating OkHttpClient"); 
    final OkHttpClient.Builder clientBuilder = new OkHttpClient().newBuilder(); 
    clientBuilder.certificatePinner(provideCertificatePinner); 
    clientBuilder.connectTimeout(BuildConfig.CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS); 
    clientBuilder.writeTimeout(BuildConfig.WRITE_TIMEOUT, TimeUnit.MILLISECONDS); 
    clientBuilder.readTimeout(BuildConfig.CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS); 
    return clientBuilder.build(); 
} 

所以我尝试了以下几件事:

强制TLS 1.2

ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) 
.tlsVersions(TlsVersion.TLS_1_2) 
.cipherSuites(
     CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 
     CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 
     CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256) 
.build(); 

OkHttpClient client = new OkHttpClient.Builder() 
    .connectionSpecs(Collections.singletonList(spec)) 
    .build(); 

的使用和实施定制的SSLSocketFactory根据以下条件强制在AN 4.1版本中使用TLS v1.2::https://github.com/square/okhttp/issues/2372

编辑:

澄清。 PING不工作意味着我可以拦截我的应用程序和后端服务器之间的连接=>'中间人'。

现在我完全失去了如何解决这个问题。 任何帮助表示赞赏。

干杯 帕斯卡

+0

请详细解释一下“证书锁定不再有效”的含义。 – CommonsWare

+0

@CommonsWare对不起,我忘了,现在就添加它。谢谢! –

+0

我想,创建一个可重复的测试项目并向OkHttp人员提出问题,解释你如何进行MITM攻击(查尔斯等)。 – CommonsWare

我发现问题不是由OKHTTP /改造引起的,而是由客户端侧的配置错误。在这个项目中相当新,我不知道它的全部。

对不起,打扰你了,谢谢你给予的任何帮助