Autore Topic: Problemi con SSLv3  (Letto 1192 volte)

Offline riddick86

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic by Google
  • Sistema operativo:
    Mac OS X Snow Leopard
Problemi con SSLv3
« il: 25 Aprile 2012, 16:20:14 CEST »
0
Salve ragazzi,
sto impazzendo con un problema che proprio non riesco a risolvere.
Ho creato un'applicazione che deve effettuare un login presso un sito e scaricare delle pagine di cui faccio il parsing etc..
La connessione avviene su https e l'applicazione funziona da mesi sui terminali fino alla versione di Android 4.0
Dal Logcat ho scoperto che il problema è relativo a SSLv3, così ho usato delle classi per la validazione di tutti i certificati:

EasySSLSocketFactory
EasyX509TrustManager

come suggerito sul forum ma ho il seguente errore:

Codice (Java): [Seleziona]
04-25 15:49:58.321: E/LoginManager(695): Problemi di connessione!
04-25 15:49:58.321: E/LoginManager(695): javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x1a9fb8: Failure in SSL library, usually a protocol error
04-25 15:49:58.321: E/LoginManager(695): error:14077417:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert illegal parameter (external/openssl/ssl/s23_clnt.c:658 0x401e0c93:0x00000000)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:460)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.<init>(OpenSSLSocketImpl.java:643)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:614)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:70)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:172)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
04-25 15:49:58.321: E/LoginManager(695):        at furiano.portaleceda.models.ClientMultiplo.login(ClientMultiplo.java:83)
04-25 15:49:58.321: E/LoginManager(695):        at furiano.portaleceda.controls.LoginManager.loginToPortal(LoginManager.java:71)
04-25 15:49:58.321: E/LoginManager(695):        at furiano.portaleceda.controls.LoginManager.access$1(LoginManager.java:61)
04-25 15:49:58.321: E/LoginManager(695):        at furiano.portaleceda.controls.LoginManager$LoginConnect.doInBackground(LoginManager.java:142)
04-25 15:49:58.321: E/LoginManager(695):        at furiano.portaleceda.controls.LoginManager$LoginConnect.doInBackground(LoginManager.java:1)
04-25 15:49:58.321: E/LoginManager(695):        at android.os.AsyncTask$2.call(AsyncTask.java:264)
04-25 15:49:58.321: E/LoginManager(695):        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-25 15:49:58.321: E/LoginManager(695):        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-25 15:49:58.321: E/LoginManager(695):        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
04-25 15:49:58.321: E/LoginManager(695):        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
04-25 15:49:58.321: E/LoginManager(695):        at java.lang.Thread.run(Thread.java:856)
04-25 15:49:58.321: E/LoginManager(695): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x1a9fb8: Failure in SSL library, usually a protocol error
04-25 15:49:58.321: E/LoginManager(695): error:14077417:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert illegal parameter (external/openssl/ssl/s23_clnt.c:658 0x401e0c93:0x00000000)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
04-25 15:49:58.321: E/LoginManager(695):        at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410)
04-25 15:49:58.321: E/LoginManager(695):        ... 25 more


sembra essere un errore di compatibilità con SSLv3, e la cosa strana è che si presenta solo sui terminali con android 4.0.
Qualcuno ha già affrontato un simile problema?
Grazie.

Offline riddick86

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic by Google
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Problemi con SSLv3
« Risposta #1 il: 06 Ottobre 2012, 10:09:33 CEST »
0
Il problema è stato risolto.
In pratica bisogna creare un proprio Keystore da caricare nel momento della creazione della socket SSL.
Per creare il keystore ho usato http://www.lazgosoftware.com/kse/index.html, ma online ci sono numerose guide per farlo.
Per il client e la socket ho usato le classi che ho allegato.
Ringrazio Vincenzo Olivito che mi ha inviato i file e spiegato la soluzione al problema