Bug du JRE 1.5.0 concernant SSL et les PROXY

Résolu
hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006 - 17 août 2005 à 13:52
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007 - 18 août 2005 à 11:31
Bonjour, je suis débutant en JAVA.
Je suis en train de développer une application qui doit importer une page html.
Or le site est sécurisé (HTTPS) et je dois aussi franchir un proxy pour sortir de l'intranet de mon entreprise.

J'ai réussi à configurer correctement le proxy et à télécharger des pages sur des sites HTTP "classiques". Egalement, j'ai réussi à configurer le SSL et à télécharger des sites HTTPS à partir d'un réseau personnel où il n'y avait pas de Proxy. Le problème c'est quand je cherche à faire les deux en même temps (proxy et https) : les différents bout de code que j'ai trouvé sur internet qui fonctionnaient indépendamment, ne fonctionnent plus ensemble!

Alors en cherchant un peu, je suis tombé sur un bug référencé sur le site de SUN :


http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=6216082 <http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=6216082>

Apparamment, il y est question d'un bug si il y a une redirection d'URL. Mais ça n'est pas mon cas. Comme ce bug n'est présent qu'à partir du JRE 1.4, j'ai tout de même essayé de compiler mon programme avec le JRE 1.3.1 en ajoutant les bibliothèques de l'API JSSE. Mais ça ne fonctionne pas mieux, bien que l'exception renvoyée ne soit pas la même. Avec JRE 1.5.0_04 j'obtiens :


java.net.UnknownHostException: "l'URL du site HTTPS"

alors qu'avec JRE 1.3.1 et JSSE 1_0_3_03, j'obtiens :

java.net.ConnectException: Connection refused: connect

Bon, je suis un peu perdu et mes connaissances concernant l'accès au réseau sont limitées. Si vous voyez une solution ou si vous avez besoin de plus amples explications sur le code que j'utilise...
Merci d'avance

7 réponses

hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006
18 août 2005 à 11:26
Oups ! je viens de voir une grosse bourde dans mon code quand je précisait le port du proxy, j'avais écris :
System.setProperty( "https.proxyPort", "443" );
Alors que le port de mon proxy est 80 pour tous les protocoles (http,https,ftp,...) comme le précise le panneau de configuration Internet de Windows.

J'ai remis de l'ordre la dedans !
3
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
18 août 2005 à 09:01
Ton exception avec la 1.5 est pourtont clair , "l'URL du site HTTPS" n'est pas un host connu (je suppose qu'a la place de la phrase en rouge tu as le veritable host???)
0
hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006
18 août 2005 à 10:34
Oui j'ai un message du genre java.net.UnknownHostException: www.machin.com.
Mais l'exception n'es pas plus claire pour autant : si jamais j'essaie d'atteindre l'URL à partir d'un browser (IExplorer) ça fonctionne, l'URL est valide et le proxy ne la filtre pas. Et si, avec mon prog, j'essaie d'atteindre l'URL sans la sécurité (en spécifiant d'utiliser le protocole HTTP), il n'y a pas de problème non plus.
Alors pourquoi l'hote est inconnu quand j'essaie avec HTTPS ? J'ai essayé plusieurs sites HTTPS différents dont les certificats sont acceptés par défaut dans JAVA. Alors je sais pas...
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
18 août 2005 à 10:44
attends, si tu mets pas le protocole devant ton host, ca ne peut pas marcher:
sur ton exception, il manque le htpp, c'est tout. Un explorer la rajoute par defaut si elle est absente.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006
18 août 2005 à 10:54
Merci de tes réponses.
En fait je précise le protocole à ce niveau, quand j'instancie l'URL :
URL url = new URL(args[0]); //avec args[0]=https://www.internet-mineurs.gouv.fr/
(je précise que le site au dessus est un site gouvernemental sur les droits des mineurs )

C'est pas suffisant ?
J'ai vu récemment qu'on pouvait utiliser un autre constructeur (avec plus de paramètres) de la classe URL en découpant l'URL en question selon ses différents champs : le protocole, le fichier, le port, ... J'ai pas essayé parce que je pensais que ça revenait au même.
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
18 août 2005 à 11:27
L'autre constructteur prend qqchose de type URI.

Essaie ca:



URL url = null;

try {

url = new URL("https://www.internet-mineurs.gouv.fr/");

}

catch (MalformedURLException ex) {

System.out.println(ex);

}

try {

URLConnection conn = url.openConnection();

System.out.println("Connected.");

}

catch (IOException ex) {

System.out.println(ex);

}
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
18 août 2005 à 11:31
Bon bah voila, c'est toujours un truc con comme bien souvent... Bonne continuation.
0
Rejoignez-nous