2017-08-11 7 views
2

こんにちは親愛なる、開発者、アンドロイド - レトロフィット2.3とOkHTTPと証明書のピン止め

は、私は次の問題があります。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 V1.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

編集:

説明のために。 Piningが機能していないということは、私のアプリケーションとバックエンドサーバーの接続を傍受できることを意味します。

今、私はこの問題を解決する方法を完全に失っています。 何か助けていただければ幸いです。

乾杯 パスカル

+0

与えられた任意の助けに感謝を気にしていると申し訳な手段を「証明書のピン止めはもはや働いている」ものを、詳細に、説明していないしてください。 – CommonsWare

+0

@CommonsWare申し訳ありません、私はそれを今忘れてしまいました。ありがとう! –

+0

再現可能なテストプロジェクトを作成し、MITM攻撃(Charlesなど)をどのように行っているのかをOkHttpの人々に報告してください。 – CommonsWare

答えて

0

私は問題がOKHTTP /レトロフィットすることにより、クライアント側ではなく設定ミスによって引き起こされていなかったことが分かりました。そのプロジェクトでかなり新しくなって、私はそれをすべて知っていませんでした。

あなたと

関連する問題