i will try on lower versions.

On Nov 2, 3:09 pm, Kumar Bibek <[email protected]> wrote:
> SSL context is not implemented on Android. And as far as certificate
> exception issue, there seems to be a problem on 2.2 where some TrustManagers
> do not work as expected, which do work on lower versions. Even I am stuck
> with this issue. Seems like a 2.2 issue. I had read about this somehwere.
>
> http://stackoverflow.com/questions/2899079/custom-ssl-handling-stoppe...
>
>
>
> On Tue, Nov 2, 2010 at 12:34 AM, gato chlr <[email protected]> wrote:
> > DanH , thanks for the answer, i have read about TLS, and now i know it is a
> > SSLv3.
>
> > I have tried with TLS , and it works! but, then i get a
> > javax.net.ssl.SSLException: Not Trusted server certificate. So it seems that
> > my know my dummy trustManager is not working :S. the exception occurs in the
> > instruction :
>
> > HttpResponse response = httpclient.execute(targetHost, httpget,
> > localcontext);
>
> >  I have changed the value "SSL" to "TLS" in my desktop (not for android)
> > and it work fine. But in my android application (this one) it throws that
> > exception.
>
> > Maybe my trustManager does not works in Android, if anybody has a code or
> > solution to fix this problem i will really appreciate
>
> > thank for the answers
>
> > On 1 November 2010 14:37, DanH <[email protected]> wrote:
>
> >> Have you tried "TLS"?
>
> >> On Nov 1, 9:29 am, gato chlr <[email protected]> wrote:
> >> > Hi list,
>
> >> > i want to implement a client for https, all in my localhost (in my
> >> apache,
> >> > it is configured to ask authentication), with a resource "
> >>https://localhost:443/resources/resource1.xml";
> >> > the server works fine.
>
> >> > I have a client for desktop, and it works fine, the resources are
> >> consumed
> >> > using httpcomponents-client-4.0.3), i have readed that Android uses that
> >> > version.
>
> >> > This is the code of my client in Android (practically is the same of
> >> desktop
> >> > mapped to android) ,
>
> >> > in the line of   SSLContext sc = SSLContext.getInstance("TSL"); the next
> >> > exception is thrown :
>
> >> > java.security.NosuchAlgorithmException: SSLContext SSL implementation
> >> not
> >> > found
>
> >> > Please does anybody know how to solve this issue?
>
> >> > i have tried with TSL and the exception continue.
>
> >> > import java.io.IOException;
>
> >> > import javax.net.ssl.HttpsURLConnection;
> >> > import javax.net.ssl.SSLContext;
> >> > import javax.net.ssl.TrustManager;
> >> > import javax.net.ssl.X509TrustManager;
>
> >> > import org.apache.http.HttpEntity;
> >> > import org.apache.http.HttpException;
> >> > import org.apache.http.HttpHost;
> >> > import org.apache.http.HttpRequest;
> >> > import org.apache.http.HttpRequestInterceptor;
> >> > import org.apache.http.HttpResponse;
> >> > import org.apache.http.auth.AuthScheme;
> >> > import org.apache.http.auth.AuthScope;
> >> > import org.apache.http.auth.AuthState;
> >> > import org.apache.http.auth.Credentials;
> >> > import org.apache.http.auth.UsernamePasswordCredentials;
> >> > import org.apache.http.client.CredentialsProvider;
> >> > import org.apache.http.client.methods.HttpGet;
> >> > import org.apache.http.client.protocol.ClientContext;
> >> > import org.apache.http.impl.auth.BasicScheme;
> >> > import org.apache.http.impl.client.DefaultHttpClient;
> >> > import org.apache.http.protocol.BasicHttpContext;
> >> > import org.apache.http.protocol.ExecutionContext;
> >> > import org.apache.http.protocol.HttpContext;
> >> > import org.apache.http.util.EntityUtils;
>
> >> > import android.app.Activity;
> >> > import android.os.Bundle;
> >> > import android.widget.TextView;
>
> >> > public class androidNativeRest extends Activity {
>
> >> >     /** Called when the activity is first created. */
> >> >     public void onCreate(Bundle savedInstanceState) {
>
> >> >         super.onCreate(savedInstanceState);
>
> >> >         TextView tv = new TextView(this);
>
> >> >         String res="nada";
>
> >> >         DefaultHttpClient httpclient = new DefaultHttpClient();
>
> >> >         httpclient.getCredentialsProvider().setCredentials(
> >> >                 new AuthScope("10.0.2.2", 443),
> >> >                 new UsernamePasswordCredentials("user", "pass"));
>
> >> >         BasicHttpContext localcontext = new BasicHttpContext();
>
> >> >         // Generate BASIC scheme object and stick it to the local
> >> >         // execution context
> >> >         BasicScheme basicAuth = new BasicScheme();
> >> >         localcontext.setAttribute("preemptive-auth", basicAuth);
>
> >> >         // Add as the first request interceptor
> >> >         httpclient.addRequestInterceptor(new PreemptiveAuth(), 0);
>
> >> >         HttpHost targetHost = new HttpHost("10.0.2.2", 443, "https");
>
> >> >         HttpGet httpget = new HttpGet("/resources/resource1.xml");
>
> >> >         res+="executing request: " + httpget.getRequestLine()+"/ln";
> >> >         res+="to target: " + targetHost+"/ln";
> >> >         //----------------------TRUST MANAGER---------------------------
> >> >         //Create a trust manager that does not validate certificate
> >> chains
> >> >         TrustManager[] trustAllCerts = new TrustManager[]{
> >> >                 new X509TrustManager() {
> >> >                     public java.security.cert.X509Certificate[]
> >> > getAcceptedIssuers() {
> >> >                         return null;
> >> >                     }
> >> >                     public void checkClientTrusted(
> >> >                         java.security.cert.X509Certificate[] certs,
> >> String
> >> > authType) {
> >> >                     }
> >> >                     public void checkServerTrusted(
> >> >                         java.security.cert.X509Certificate[] certs,
> >> String
> >> > authType) {
> >> >                     }
> >> >                 }
> >> >             };
> >> >         //install trust manager
> >> >         try {
>
> >> >             SSLContext sc = SSLContext.getInstance("TSL");
>
> >> >             sc.init(null, trustAllCerts, new
> >> java.security.SecureRandom());
>
> >> > HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
> >> >         } catch (Exception e) {
> >> >             res+="error en trustmanage"+e.toString()+" /ln";
> >> >         }
> >> >         //now we can access an https URL without having the certificate
> >> in
> >> > the truststore
> >> >         //----------------------------FINISH TRUST MANAGER
> >> > INSTALLATION---------
>
> >> >          for (int i = 0; i < 3; i++) {
> >> >                 try{
> >> >                 HttpResponse response = httpclient.execute(targetHost,
> >> > httpget, localcontext);
> >> >                 HttpEntity entity = response.getEntity();
>
> >> >                 res+="---------------------------------------- /ln";
> >> >                 res+=response.getStatusLine()+"/ln";
> >> >                 if (entity != null) {
> >> >                     res+="Response content length: " +
> >> > entity.getContentLength()+"/ln";
> >> >                     res+=EntityUtils.toString(entity)+"/ln";
> >> >                     res = EntityUtils.toString(entity);
> >> >                     entity.consumeContent();
>
> >> >                 }
> >> >                 }catch(Exception e1){
> >> >                     res+="errores che";
> >> >                 }
>
> >> >             }
>
> >> >         httpclient.getConnectionManager().shutdown();
>
> >> >        tv.setText(res);
>
> >> >        setContentView(tv);
>
> >> >     }
> >> >     static class PreemptiveAuth implements HttpRequestInterceptor {
>
> >> >         public void process(
> >> >                 final HttpRequest request,
> >> >                 final HttpContext context) throws HttpException,
> >> IOException
> >> > {
>
> >> >             AuthState authState = (AuthState) context.getAttribute(
> >> >                     ClientContext.TARGET_AUTH_STATE);
>
> >> >             // If no auth scheme avaialble yet, try to initialize it
> >> > preemptively
> >> >             if (authState.getAuthScheme() == null) {
> >> >                 AuthScheme authScheme = (AuthScheme)
> >> context.getAttribute(
> >> >                         "preemptive-auth");
> >> >                 CredentialsProvider credsProvider =
> >> (CredentialsProvider)
> >> > context.getAttribute(
> >> >                         ClientContext.CREDS_PROVIDER);
> >> >                 HttpHost targetHost = (HttpHost) context.getAttribute(
> >> >                         ExecutionContext.HTTP_TARGET_HOST);
>
> >> >                 if (authScheme != null) {
> >> >                     Credentials creds = credsProvider.getCredentials(
> >> >                             new AuthScope(
> >> >                                     targetHost.getHostName(),
> >> >                                     targetHost.getPort()));
> >> >                     if (creds == null) {
> >> >                         throw new HttpException("No credentials for
> >> > preemptive authentication");
> >> >                     }
> >> >                     authState.setAuthScheme(authScheme);
> >> >                     authState.setCredentials(creds);
> >> >                 }
> >> >             }
>
> >> >         }
>
> >> >     }
>
> >> > }
>
> >> > thanks for the answers.
>
> >> --
> >> You received this message because you are subscribed to the Google
> >> Groups "Android Developers" group.
> >> To post to this group, send email to [email protected]
> >> To unsubscribe from this group, send email to
> >> [email protected]<android-developers%[email protected]>
> >> For more options, visit this group at
> >>http://groups.google.com/group/android-developers?hl=en
>
> >  --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to [email protected]
> > To unsubscribe from this group, send email to
> > [email protected]<android-developers%[email protected]>
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
>
> --
> Kumar Bibekhttp://techdroid.kbeanie.comhttp://www.kbeanie.com

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to