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 は私にとってかなり難しいものです。