5

そこの。https://free.temafon.ruとの https 接続を確立する必要がありますが、Android 2.3 以下で CertPathValidatorException が発生しました。私が何をした。

  1. Firefoxでhttps://free.temafon.ruからすべての証明書を取得します。
  2. テメフォン証明書からルート証明書まで、キーストアに証明書を順番にインポートします。
  3. SSL コンテキストを初期化します。

    最終的なキーストア キーストア = KeyStore.getInstance("BKS");

        keystore.load(getResources().openRawResource(R.raw.temafon),
                    "W0d3Uoa5PkED".toCharArray());
        final TrustManager trustManager = new TemafonTrustManager(keystore);
    
        final SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, new TrustManager[] { trustManager }, null);
    
        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext
                .getSocketFactory());
    

    ここでは、サーバーが証明書を間違った順序で送信するため、カスタム TrustManagerを使用します。

このコードは Android 4.0 では問題なく動作しますが、2.3 では java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.What I'm doing whrong?で失敗しました。

ここにあるテスト プロジェクトを作成しました。

4

1 に答える 1