如何解决Android应用和Dropwizard服务器之间的SSL握手失败

时间:2019-05-27 03:02:28

标签: android ssl dropwizard

我正在尝试从Android应用向创建的Dropwizard服务器发出HTTP请求,并且由于 WRONG_VERSION_NUMBER 而看到SSL握手失败。我如何使它们一起工作?

就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

0 个答案:

没有答案