19

HttpsUrlConnection API を使用して https サーバーに接続するクライアント アプリケーションを Android で作成しました。Poodle の脆弱性のため、リクエストを呼び出す際に、有効なプロトコルのリストから SSLv3 を無効にする必要があります。

オラクルが取得したガイドラインに従いました

URL接続を呼び出す前に次の行を追加しました

java.lang.System.setProperty("https.protocols", "TLSv1");

このソリューションは、通常の Java プログラムで正常に機能します。
SSLv3SSLHandShakeExceptionプロトコルでのみ動作するサーバーに接続しようとしたときに発生しました。

しかし、懸念は次のとおりです。同じ修正がAndroidでは機能しません。何か不足していますか、それともアンドロイドの別のアプローチを試す必要がありますか? 提案してください。

4

8 に答える 8

15

Bhavit S. Sengar のanswerに触発されて、その手法を非常に単純なメソッド呼び出しにバンドルしました。AndroidHttpsURLConnection. _ NetCipher はHttpsURLConnection、サポートされている最適な TLS バージョンを使用するようにインスタンスを構成し、SSLv3 サポートを削除して、その TLS バージョンに最適な暗号スイートを構成します。まず、それをbuild.gradleに追加します。

compile 'info.guardianproject.netcipher:netcipher:1.2'

または、 netcipher-1.2.jarをダウンロードして、アプリに直接含めることもできます。次に、呼び出す代わりに:

HttpURLConnection connection = (HttpURLConnection) sourceUrl.openConnection();

これを呼び出します:

HttpsURLConnection connection = NetCipher.getHttpsURLConnection(sourceUrl);
于 2015-09-08T20:23:51.007 に答える
0

Android で実行されているPlayService パブリッシャー クライアント ライブラリを使用して、サンプルを実行したときに同じ問題が発生しました。

上記の @bhavit-s-sengar の awnser で修正しました。これにも変更AndroidPublisherHelper.newTrustedTransport()する必要がありました:

SSLContext sslcontext = SSLContext.getInstance("TLSv1");
sslcontext.init(null, null, null);
//  NoSSLv3SocketFactory is @bhavit-s-sengar's http://stackoverflow.com/a/29946540/8524
SSLSocketFactory noSSLv3Factory = new NoSSLv3SocketFactory(sslcontext.getSocketFactory());

NetHttpTransport.Builder netTransportBuilder = new NetHttpTransport.Builder();
netTransportBuilder.setSslSocketFactory(noSSLv3Factory);
HTTP_TRANSPORT = netTransportBuilder.build();
于 2015-09-03T09:31:12.917 に答える
0
 SSLContext sslContext = SSLContext.getInstance("TLSv1");
                sslContext.init(null, null, null);
                SSLSocketFactory socketFactory = sslContext.getSocketFactory();
                            httpURLConnection.setSSLSocketFactory(socketFactory);

TSL を使用した HttpsURLConnection がセキュリティの作成に失敗した場合、Android 実装は SSLV3 にフォールバックして接続します。

これを参照してください http://code.google.com/p/android/issues/detail?id=78431

于 2015-04-16T10:31:36.017 に答える