Autore Topic: Problema certificato ssl  (Letto 4347 volte)

Offline sora101

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +2
    • Mostra profilo
Problema certificato ssl
« il: 04 Gennaio 2011, 13:43:11 CET »
0
Salve a tutti. Mi devo connettere a un sito che usa una connessione sicura.
Girando in lungo e in largo google ho scoperto che continuo a ricevere l'errore:
Citazione
Not trusted server certificate
perchè il sito una un certificato firmato in proprio( o qualcosa di simile, in questo campo ammetto di saperne veramente poco)

Comunque, ho provato un sacco di classi e di esempi che ho trovato in giro ma continuo a ricevere quell'errore...

il codice che più mi è sembrato adatto è questo:
Codice (Java): [Seleziona]
   private void trustEveryone() {
       try {
               HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier(){
                       public boolean verify(String hostname, SSLSession session) {
                               return true;
                       }});
               SSLContext context = SSLContext.getInstance("TLS");
               context.init(null, new X509TrustManager[]{new X509TrustManager(){
                       public void checkClientTrusted(X509Certificate[] chain,
                                       String authType) throws CertificateException {}
                       public void checkServerTrusted(X509Certificate[] chain,
                                       String authType) throws CertificateException {}
                       public X509Certificate[] getAcceptedIssuers() {
                               return new X509Certificate[0];
                       }}}, new SecureRandom());
               HttpsURLConnection.setDefaultSSLSocketFactory(
                               context.getSocketFactory());
       } catch (Exception e) { // should never happen
               e.printStackTrace();
       }
   }

Teoricamente dovrebbe accettare qualsiasi certificato(che mi risulterebbe utile in caso di qualche cambiamento futuro da parte del sito). Purtroppo anche qesto non funziona, quindi mi rivolgo a voi, se avete qualche idea su come potrei fare...

Grazie mille!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema certificato ssl
« Risposta #1 il: 04 Gennaio 2011, 14:14:05 CET »
0
Prova
Codice (Java): [Seleziona]
 HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;

        DefaultHttpClient client = new DefaultHttpClient();

        SchemeRegistry registry = new SchemeRegistry();
        SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
        socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
        registry.register(new Scheme("https", socketFactory, 443));
        SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
        DefaultHttpClient http = new DefaultHttpClient(mgr, client.getParams());

        HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);

Offline sora101

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +2
    • Mostra profilo
Re:Problema certificato ssl
« Risposta #2 il: 04 Gennaio 2011, 14:19:12 CET »
0
Avevo già incontrato anche questo esempio e purtroppo non sono riuscito a farlo funzionare a causa di questi 3 errori:

Citazione
The method getSocketFactory() is undefined for the type SSLSocketFactory
The method setHostnameVerifier(X509HostnameVerifier) is undefined for the type SSLSocketFactory
The constructor Scheme(String, SSLSocketFactory, int) is undefined

Grazie della risposta

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema certificato ssl
« Risposta #3 il: 04 Gennaio 2011, 14:36:42 CET »
+1
Allora ricorriamo al lavoro fatto da BobActor per il suo progetto:


 rm3wifiauthentication -
 
 Project Hosting on Google Code



Codice (Java): [Seleziona]
       
         public static DefaultHttpClient getClient() {
                 Log.i(TAG,"getClient()");
                 DefaultHttpClient ret = null;

                // sets up parameters
             HttpParams params = new BasicHttpParams();
             HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
             HttpProtocolParams.setContentCharset(params, "utf-8");
             params.setBooleanParameter("http.protocol.expect-continue", false);
               
                // registers schemes for both http and https
             SchemeRegistry registry = new SchemeRegistry();
             registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
             registry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
             ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(params,registry);
             ret = new DefaultHttpClient(manager, params);
             return ret;
            }

dove EasySSLSocketFactory

EasySSLSocketFactory.java -
 rm3wifiauthentication -
 
 Project Hosting on Google Code



Se su froyo ottieni un errore tipo ""SSL handshake failure: I/O error during system call, Broken pipe":
Custom SSL handling stopped working on Android 2.2 FroYo - Stack Overflow
« Ultima modifica: 04 Gennaio 2011, 15:08:00 CET da Ricky` »

Offline sora101

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +2
    • Mostra profilo
Re:Problema certificato ssl
« Risposta #4 il: 04 Gennaio 2011, 15:02:11 CET »
0
Uno splendido lavoro! sembra funzionare! Grazie mille! Topic risolto ;)

Offline CBSW

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero CM 7.0
  • Play Store ID:
    CBSW
  • Sistema operativo:
    OSX
Re:Problema certificato ssl
« Risposta #5 il: 01 Febbraio 2011, 23:24:08 CET »
0
dopo mille tentativi in rete ho trovato questo thread... ed in effetti sull'emulatore funziona.

pero' non mi funziona sul device (Hero con CM7)

javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x2794d0: I/O error during system call, Broken pipe

qualche idea?

Grazie

---
Se siete utenti BikeMi, provate la mia applicazione gratuita MyBikeMi (è sul market) e fatemi sapere eventuali suggerimenti e problemi

Offline BobArctor

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero, Galaxy S4, GP50
  • Play Store ID:
    Michele Valentini
  • Sistema operativo:
    Windows 8
Re:Problema certificato ssl
« Risposta #6 il: 02 Febbraio 2011, 08:50:14 CET »
0
Bene :D sono contento di essere stato utile in qualche modo...
comunque, ho notato che alcuni device con froyo, hanno dei problemi con la mia app... Anche se con l'emulatore 2.2 funziona senza alcun problema.

Offline CBSW

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero CM 7.0
  • Play Store ID:
    CBSW
  • Sistema operativo:
    OSX
Re:Problema certificato ssl
« Risposta #7 il: 02 Febbraio 2011, 10:24:25 CET »
+2
Per chi è interessato ho trovato la soluzione al problema con 2.2 in su:
Custom SSL handling stopped working on Android 2.2 FroYo - Stack Overflow

basta cambiare in EasySSLSocketFactory.java (nella mia versione riga 94)
 
Codice (Java): [Seleziona]
public Socket createSocket(Socket socket, String host, int port,
        boolean autoClose) throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket();
}
in
Codice (Java): [Seleziona]
public Socket createSocket(Socket socket, String host, int port,
        boolean autoClose) throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(   socket,host,port,autoClose   );
}

Grazie a tutti
---
Se siete utenti BikeMi, provate la mia applicazione gratuita MyBikeMi (è sul market) e fatemi sapere eventuali suggerimenti e problemi

Offline Silvio

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Wildfire
  • Sistema operativo:
    Windows XP
Re:Problema certificato ssl
« Risposta #8 il: 28 Marzo 2011, 18:44:26 CEST »
0
Salve a tutti,
è da un po' di tempo che provo a stabilire una connessione https con il sito https://areaclienti.tre.it/selfcare/login utilizzando DefaultHttpClient, ho provato diverse cose trovate in giro, ed infine anche la soluzione consigliata in questo thread, purtroppo ottengo sempre l'errore:

03-28 16:25:12.792: WARN/System.err(265): javax.net.ssl.SSLException: Not trusted server certificate

Sto sviluppando su Android 2.2, effettivamente prima della modifica suggerita da CBSW l'errore era

javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x2794d0: I/O error during system call, Broken pipe

ma, corretto questo di nuovo "Not trusted server certificate".
Qualcuno mi può aiutare, avete bisogno del codice o di altre info ?
Grazie anticipato.

Ciao.




Offline maxbo17

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Problema certificato ssl
« Risposta #9 il: 11 Novembre 2015, 17:36:12 CET »
0
Buonasera a tutti!
Sono nuovo di questo forum.
Stavo cercando informazioni circa connessioni con certificato SSL su android e ho trovato questo post.
Il mio problema è che ho un'app che esegue una connessione ad un sito in ssl, e funziona perfettamente su Android 4, mentre lo stesso codice retituisce errore su Android  5.

Per caso qualcuno ha già riscontrato lo stesso problema?

Grazie per il momento.