Я пытаюсь сделать 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