2017-08-11 73 views
2

你好,親愛的開發商,鋼釘的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

回答

0

我發現問題不是由OKHTTP /改造引起的,而是由客戶端側的配置錯誤。在這個項目中相當新,我不知道它的全部。

對不起,打擾你了,謝謝你給予的任何幫助