Android SSLPeerUnverifiedException -> HostnameVerifier.verify() вызывается в бесконечном цикле
Я пытаюсь подключиться к серверу через HTTPS-соединение и библиотеку KSOAP2, а затем получаю следующее исключение:
javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.XXX.X.XXX not verified:
certificate: sha1/.../...=
DN: C=ES,CN=*.customername.es,O=XXX XXXX S.L.U\ ,OU=IT,2.5.4.5=#XXXXXXXXX,L=[location]
subjectAltNames: [*.customername.es]
Затем я попытался установить по умолчанию HostnameVerifier, позвонив:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
//HttpTransportSE androidHttpTransport = crearhttptransport();
HttpsTransportSE androidHttpsTransport = new HttpsTransportSE("10.XXX.X.XXX", 443, "/demo/webservice.asmx", MILLISECONDS_TIME_OUT);
if (androidHttpsTransport != null) {
//FakeX509TrustManager.allowAllSSL()
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(final String hostname, final SSLSession session) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("10.XXX.X.XXX", session);
//return hv.verify("*.customername.es", session);
}
});
androidHttpsTransport.call(NAMESPACE + request.getName(), envelope, generateHeaders());
return envelope.bodyIn != null ? (SoapObject) envelope.bodyIn : null;
}
но затем я получаю StackOverFlowException, потому что метод verify (...) попадает в цикл и вызывается бесконечно:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
Process: myapp.androidv2, PID: 32471
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$4.done(AsyncTask.java:399)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.StackruError: stack size 1039KB
at myapp.androidv2.resourceaccess.WSManager$1.verify(WSManager.java:209)
at myapp.androidv2.resourceaccess.WSManager$1.verify(WSManager.java:211)
at myapp.androidv2.resourceaccess.WSManager$1.verify(WSManager.java:211)
at myapp.androidv2.resourceaccess.WSManager$1.verify(WSManager.java:211)
at myapp.androidv2.resourceaccess.WSManager$1.verify(WSManager.java:211)
...)
Вы также можете увидеть прокомментированный FakeX509TrustManager.allowAllSSL(), который я также уже пытался использовать, как они здесь говорят, но он заканчивается той же ошибкой цикла.