IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

[SSL]Communication avec un serveur en https


Sujet :

Développement Web en Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [SSL]Communication avec un serveur en https
    Bonjour,
    J'essaie de communiquer, par une application Java, avec un serveur avec le protocol https, pour cela je declare une URL de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    URL url = new URL("https://www.adresse.com/"); 
    URLConnection con = url.openConnection();
    dans l'excution je recoit l'exception suivante:

    javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Could not find trusted certificate

    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshakeDashoA6275)
    at sun.net.www.protocol.https.HttpsClient.afterConnectDashoA6275)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(DashoA6275)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:574)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(DashoA6275)
    at monpackage.MaClasse.maMethode(MaClasse.java:61)
    at monpackage.MaClasse.main(MaClasse.java:463)
    Caused by: java.security.cert.CertificateException: Could not find trusted certificate
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(DashoA6275)
    at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(DashoA6275)
    ... 12 more
    Je sais que le problème vient du "certificat de confiance", mais je ne sais pas comment faire pour regler ce problème.

    Merci d'avance.


    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Février 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 119
    Points : 136
    Points
    136
    Par défaut
    Tu a posté ton message 2 fois;
    Je viens de répondre dans le forum Général Java


    http://www.javaworld.com/javaworld/javatips/jw-javatip96.html

  3. #3
    Membre averti
    Avatar de knotty
    Inscrit en
    Mars 2002
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 126
    Points : 391
    Points
    391
    Par défaut
    reponse de braim:

    http://www.javaworld.com/javaworld/j...javatip96.html

    Je ne pense pas que ce soit tout a fait le probleme. Apparemment, tu utilises jdk 1.4.

    Exemple sans certificat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    public class TestURL {
     
        public static void main(String arg[]) {
     
     
    	try {
    	    String furlsURL = "https://www.hello.com";
     
    	    URL url = new URL(furlsURL);
     
    	    String sAuth;
     
    	    // 1. Open the connection and keep it open in the instance of this class
     
    	    HttpsURLConnection urlConn = (HttpsURLConnection) url.openConnection();
     
    	    // Init trust managers so the authenticity of the certificate is in our control.
    	    X509TrustManager trustMgr = new MyTrustManager();
     
    	    TrustManager trustMgrs[] = {trustMgr};
     
    	    SSLContext ctx = SSLContext.getInstance("SSL");
    	    ctx.init(null, trustMgrs, null);
     
    	    SSLSocketFactory sf = ctx.getSocketFactory();
    	    urlConn.setSSLSocketFactory(sf);
     
    	    urlConn.setHostnameVerifier(new MyHostNameVerifier());
     
    	    urlConn.setDoInput(true);
    	    urlConn.setDoOutput(true);
    	    urlConn.setUseCaches(false);
     
    	    System.out.println("url: " + url);
     
    	    InputStream in = urlConn.getInputStream();
     
    	    int c = 0;
    	    while((c = in.read()) != -1) {
    		System.out.print((char)c);
    	    }
     
    	} catch (Exception e){
    	    System.out.println(e);
    	} // end of try-catch
        }
     
    }
     
    class MyTrustManager implements X509TrustManager {
     
        MyTrustManager() { // constructor
    	// create/load keystore
    	// No need to load the keystore because it will be validated on demand.
        }
     
        public void checkClientTrusted(X509Certificate chain[], String authType) throws CertificateException {
    	return;
        }
     
        public void checkServerTrusted(X509Certificate chain[], String authType) throws CertificateException {
    	return;
        }
     
        public  X509Certificate[] getAcceptedIssuers() {
    	return null;
        }
     
    }
     
    class MyHostNameVerifier implements HostnameVerifier {
        public boolean verify(String hostname, SSLSession session) {
    	return true;
        }
    }
    Bon courage.
    Christophe Ludet
    Testez vos connaissances Java - http://knotty.developpez.com
    Donner des ailes a votre application (J2EE patterns) - http://knotty.developpez.com/j2ee

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    j'ai testé le code précédant et il marche , mon problème est resolu, Merci encore une fois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 42
    Dernier message: 08/12/2010, 19h20
  2. communication avec un serveur Java
    Par sohafarhat dans le forum Général Java
    Réponses: 7
    Dernier message: 27/05/2009, 16h48
  3. [UBUNTU GWTEXT] pas de communication avec le serveur
    Par nezdeboeuf62 dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 11/02/2009, 19h31
  4. Réponses: 7
    Dernier message: 20/03/2008, 12h25
  5. Difficultés de communications avec un serveur FTP
    Par Remedy dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 20/10/2006, 08h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo