そこの。https://free.temafon.ruとの https 接続を確立する必要がありますが、Android 2.3 以下で CertPathValidatorException が発生しました。私が何をした。
- Firefoxでhttps://free.temafon.ruからすべての証明書を取得します。
- テメフォン証明書からルート証明書まで、キーストアに証明書を順番にインポートします。
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?で失敗しました。
ここにあるテスト プロジェクトを作成しました。