5

Apache HttpClient ライブラリを使用して https 接続をセットアップしています。残念ながら、Android では「信頼されていないサーバー証明書」というエラーが表示されます。電話のブラウザでサイトを参照すると、証明書が正しく検証されるため、電話のルート証明書を HttpClient に「認識させる」必要があると思います。これは私の HttpClient セットアップ コードです。

HttpParams params = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout( params, 20000 );
HttpConnectionParams.setSoTimeout( params, 20000 );

HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset( params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue( params, false);

SchemeRegistry schReg = new SchemeRegistry();
schReg.register( new Scheme( "http", PlainSocketFactory.getSocketFactory(), 80 ) );
schReg.register( new Scheme( "https", SSLSocketFactory.getSocketFactory(), 443 ) );

ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg );

DefaultHttpClient defaultHttpClient = new DefaultHttpClient( conMgr, params );

return ( defaultHttpClient );

ご覧のとおり、SSLSocketFactory に対して特別なことは何もしていません。キーストアにカスタム証明書を追加せずに、HttpClient ライブラリでサイトを検証するにはどうすればよいですか? カスタム SSLSocketFactory を作成し、Android フォンから cacerts.bks をロードする必要がありますか? その場合、別の電話でキーストアのパスワードが異なると問題が発生する可能性がありますか?

さらに情報が必要な場合はお知らせください。この SSL は私にとってかなり難しいものです。

4

3 に答える 3

-2

私は前に同じ問題を抱えています。

あなたはこの答えを使うことができます、それは私のためにうまくいきます..

HTTPS経由でHttpClientを使用してすべての証明書を信頼する

于 2011-04-06T17:55:58.323 に答える