2013-09-22 12 views
5

https://free.temafon.ruとhttps接続を確立する必要がありますが、Android 2.3以降ではCertPathValidatorExceptionが発生しています。私が何をした。HttpsUrlConnection:認証パスの信頼アンカーが2.3で見つかりません

  1. Firefoxでhttps://free.temafon.ruのすべての証明書を取得します。
  2. temefon証明書からルート証明書に順番にキーストアの証明書をインポートします。
  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()); 
    

    サーバが間違った順序で本命を送りますので、私は、custom TrustManagerを使用しています。

このコードはAndroid 4.0では問題なく動作しますが、2.3で失敗しましたjava.security.cert.CertPathValidatorException: Trust anchor for certification path not found.私は何をしていますか?

私はhereというテストプロジェクトを作成しました。

+0

解決方法を見つけましたか?私は同じ問題に取り組んでいます。 – jimbob

+0

残念ながら、私は2.3のすべての証明書を受け入れることになりました。 – Bracadabra

答えて

0

FireFoxですべての証明書を取得したとしたら、ルートCAも含めましたか?

ほとんどの場合、Android 2.3にはルートCAがインストールされていません。このあたりlink

この場合、システムによって信頼されていないCAがあるため、SSLHandshakeExceptionが発生します。これは、Androidでまだ信頼されていない新しいCAの証明書を持っているか、またはのアプリがCAのない古いバージョンで実行されていることが原因である可能性があります。

+0

私はAndroid 2.3にルートCAがないことに同意しますが、すべての証明書チェーンを取得してそれをカスタムトラストストアに追加します。 – Bracadabra

関連する問題