Как устранить ошибку SSL Handshake между приложением Android и сервером Dropwizard - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь сделать HTTP-запрос из приложения Android на созданный мной сервер Dropwizard и вижу сбой рукопожатия SSL из-за WRONG_VERSION_NUMBER .Как заставить их работать вместе?

Что касается SSL или другой аутентификации, я использую технологии по умолчанию как для Dropwizard, так и для Android - для них ничего не настроено.Я пытался установить различные протоколы на сервере с аргументами JVM

-Dhttps.protocols=TLSv1.2,TLSv1.1,TLSv1

Но, похоже, это не имело никакого значения.Поскольку я ничего не установил, я не знаю, что каждая сторона использует по умолчанию.

Вот как я устанавливаю соединение внутри моего приложения:

 private class ScanRetreiver extends AsyncTask<String, Void, String> {

    @Override
    public String doInBackground(String... args) {
        String resultString = null;
        try {
            //send GET request to REST API for list of items
            URL url = new URL(args[0]);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            try {
                InputStream in = new BufferedInputStream(urlConnection.getInputStream());
                resultString = convertStreamToString(in);
            } finally {
                urlConnection.disconnect();

                //display items--this means generating an arbitrary list of elements.  should be fun
                //optionally, elements can be expandable
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultString;
    }

Я вижуИсключение в строке, где я пытаюсь вызвать getInputStream на urlConnection.

Это сообщение об ошибке, которое я вижу на стороне приложения вещей:

 W/System.err: javax.net.ssl.SSLHandshakeException: Handshake failed
 W/System.err:     at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:302)
 W/System.err:     at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:1480)
 W/System.err:     at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1424)
 W/System.err:     at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1368)
 W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:219)
 W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142)
 W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104)
 W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392)
 W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325)
 W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:470)
 W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:416)
 W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:244)
 W/System.err:     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
 W/System.err:     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26)
 W/System.err:     at com.example.myfirstapp.ScanResultActivity$ScanRetreiver.doInBackground(ScanResultActivity.java:55)
 W/System.err:     at com.example.myfirstapp.ScanResultActivity$ScanRetreiver.doInBackground(ScanResultActivity.java:45)
 W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:333)
 W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
 W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 W/System.err:     at java.lang.Thread.run(Thread.java:764)
 W/System.err: Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x73e73f3908: Failure in SSL library, usually a protocol error
error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER (external/boringssl/src/ssl/tls_record.cc:242 0x73f51bfecf:0x00000000)
 W/System.err:     at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
 W/System.err:     at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:383)
 W/System.err:     at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:231)
    ... 21 more
...