こんにちは親愛なる、開発者、アンドロイド - レトロフィット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が機能していないということは、私のアプリケーションとバックエンドサーバーの接続を傍受できることを意味します。
今、私はこの問題を解決する方法を完全に失っています。 何か助けていただければ幸いです。
乾杯 パスカル
与えられた任意の助けに感謝を気にしていると申し訳な手段を「証明書のピン止めはもはや働いている」ものを、詳細に、説明していないしてください。 – CommonsWare
@CommonsWare申し訳ありません、私はそれを今忘れてしまいました。ありがとう! –
再現可能なテストプロジェクトを作成し、MITM攻撃(Charlesなど)をどのように行っているのかをOkHttpの人々に報告してください。 – CommonsWare