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

Sécurité Java Discussion :

requete HTTPS correcte


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Par défaut requete HTTPS correcte
    Bonjour.

    Je ne suis pas sur d'avoir mis mon topic dans la bonne catégorie donc merci de me signaler si il existe une catégorie plus adéquate.

    J’aimerais faire a partir d’une URL, faire une requête https et afficher le code source de la page.

    J’y arrive bien avec une requête http normal de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void httpRequest() {
    	try {
    		URL url = new URL("http://www.google.com");
    		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    		InputStream urlData = connection.getInputStream();
    		System.out.println(convertStreamToString(urlData));
    	} catch (Exception e) {
    		e.printStackTrace();
    		System.out.println("the server is not responding");
    	}
    }
    Si ça intéresse des gens voici ma méthode convertStreamToString
    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
     
    public static String convertStreamToString(InputStream is) {
    	BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    	StringBuilder sb = new StringBuilder();
    	String line = null;
    	try {
    		while ((line = reader.readLine()) != null) {
    			sb.append(line + "\n");
    		}
    	} catch (IOException e) {
    		e.printStackTrace();
    	} finally {
    		try {
    			is.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	return sb.toString();
    }
    Maintenant j’aimerais bien faire pareil pour une adresse https.
    J’ai trouvé une façon qui me retourne bien la page mais en réécrivant la méthode de vérification en renvoyant toujours true.

    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
     
    private void httpsRequest() {
    	try {
    		HostnameVerifier hv = new HostnameVerifier() {
    			public boolean verify(String urlHostName, SSLSession session) {
    				return true;
    			}
    		};
    		HttpsURLConnection.setDefaultHostnameVerifier(hv);
    		URL url = new URL("https://www.globalsign.com");
    		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    		InputStream urlData = connection.getInputStream();
    		System.out.println(convertStreamToString(urlData));
    	} catch (Exception e) {
    		e.printStackTrace();
    		System.out.println("the server is not responding");
    	}
    }
    Donc j’ai le code de la page mais la validité de l’authentification n’est pas vérifiée.

    Si qqun a une idée pour comment vérifier le certificat serveur ca m'interesse.
    merci.

    @+

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 21
    Par défaut
    En fait, avec ton exemple, la validité de ton certificat est bien assuré (le certificat a bien été signé par une autorité de certification)

    Le HostnameVerifier vérifie simplement que le site auquel on est connecté correspond bien à celui pour lequel le certificat a été signé.

    Si le certificat est valide pour le nom de domaine, il n'y a pas besoin de changer le verifier par défaut et le code pour le http marchera pour le https.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Par défaut
    En effet tu as raison.

    Cela me permet de faire une httprequest avec l'ip local de la machine et pas l'adresse qui est certifié.

    Maintenant je cherche comment faire une requete sur un cerfit self signed...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SiX-P4cK Voir le message
    En effet tu as raison.

    Cela me permet de faire une httprequest avec l'ip local de la machine et pas l'adresse qui est certifié.

    Maintenant je cherche comment faire une requete sur un cerfit self signed...
    Salut,

    Pour ça il te faut donner ton implémentation de TrustManager. Celui apr défaut n'accepte que les certificat dans le truststore par défaut, ou un certificat dont une CA de la chaine est dans ce truststore. Regarde ici pour voire comment faire.

    A plus

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Par défaut
    oui merci mais j'avais trouvé aussi.
    j'ai oublié de mettre résolu mais c'est corrigé.

    merci a tous

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/04/2006, 09h20
  2. [MySQL] Requete SQL correcte Mais aucun affichage
    Par jenga dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 10/04/2006, 13h55
  3. [URL] Encoder une URL (requete Http)
    Par webspeak dans le forum Général Java
    Réponses: 14
    Dernier message: 29/03/2006, 10h47
  4. Réponses: 2
    Dernier message: 20/06/2005, 14h57
  5. [http] comment faire une requete http
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/07/2004, 11h48

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