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

Entrée/Sortie Java Discussion :

Requête HTTP via httpClient bien trop longue


Sujet :

Entrée/Sortie Java

  1. #21
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    je ne peux pas faire de test depuis mon navigateur, puisque par défaut, il n'utilise pas la bonne route.

    Pour réaliser le test du navigateur, je désactive toutes mes interfaces pour que celui ci utilise la bonne ip / passerelle. Et dans ce cas, effectivement c'est quasi instantané.

    si je fais un wget, je dois preciser différents parametres, dont l'IP source avec --bind-address sinon pas de réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     wget --no-check-certificate  --bind-address 10.16.197.253 "https://root:mdp@10.16.106.33/axis-cgi/param.cgi?action=list&group=Brand.ProdNbr"
    Mais lorsque je serai en prod, je ne vais pas désactiver mes interfaces à chaque fois que je veux faire une requête

    Je tourne en rond c'est horrible..peut etre une piste avec URLStreamHandlerFactory mais j'en doute

  2. #22
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    @tchize

    le navigateur ne passe pas la même interface que la requête HTTP de appli java en effet.

    le VLAN par défaut (et donc la route par défaut) possède un accès internet, mais n'a pas le droit d’accéder à la camera.

    l'adresse IP de la machine 10.16.197.253 peut accéder à la camera mais n'a pas d’accès à internet. C'est pour cela que je veux pouvoir donner une adresse locale.

    peut être que le problème vient de la, lorsque je fais le setLocalAddress()..

    il faudrait que HTTP parte depuis cette IP mais que SSLFactory utilise celle par défaut..

    je vais creuser de ce coté !

    mais question bête, peut on éviter l'accès à internet et tout de même valider des certificats (dans le cas où ils sont auto signés uniquement.)

  3. #23
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Avec des certificats autosignés, il n'y a rien à tester.

    As-tu, comme suggéré, activé les différent logs de httpclient, qu'on vois ce qui se passe.

  4. #24
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    malheureusement non, mon appli utilise un Logger perso au départ, on a tout fait pour virer log4J..

    Mais bon, je vais le mettre parce que la ça ne va pas du tout.. je vais le mettre et voir les logs

  5. #25
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    voici les logs obtenus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    CookieSpec selected: best-matchAuth cache not set in the contextConnection request: [route: /10.16.197.253->{s}->https://10.16.106.31:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]Connection leased: [id: 0][route: /10.16.197.253->{s}->https://10.16.106.31:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]Opening connection /10.16.197.253->{s}->https://10.16.106.31:443Connecting to /10.16.106.31:443
     
    2013-10-17 10:49:23 >  Debug > APICameraAxis\$1.checkServerTrusted > checkServerTrusted ============= (APICameraAxis.java:870)
     
    Executing request GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1Target auth state: UNCHALLENGEDProxy auth state: UNCHALLENGEDhttp-outgoing-0 >> GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1http-outgoing-0 >> Host: 10.16.106.31http-outgoing-0 >> Connection: Keep-Alivehttp-outgoing-0 >> User-Agent: Apache-HttpClient/4.3.1 (java 1.5)http-outgoing-0 >> Accept-Encoding: gzip,deflatehttp-outgoing-0 >> "GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1[\r][\n]"http-outgoing-0 >> "Host: 10.16.106.31[\r][\n]"http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"http-outgoing-0 >> "User-Agent: Apache-HttpClient/4.3.1 (java 1.5)[\r][\n]"http-outgoing-0 >> "Accept-Encoding: gzip,deflate[\r][\n]"http-outgoing-0 >> "[\r][\n]"http-outgoing-0 << "HTTP/1.1 401 Unauthorized[\r][\n]"http-outgoing-0 << "Date: Thu, 17 Oct 2013 08:49:23 GMT[\r][\n]"http-outgoing-0 << "Accept-Ranges: bytes[\r][\n]"http-outgoing-0 << "Connection: close[\r][\n]"http-outgoing-0 << "WWW-Authenticate: Digest realm="AXIS_00408CDC70D4", nonce="000012f5Y6861874913b578893a44bd309340ec1b35c59", stale=FALSE, qop="auth"[\r][\n]"http-outgoing-0 << "WWW-Authenticate: Basic realm="AXIS_00408CDC70D4"[\r][\n]"http-outgoing-0 << "Content-Length: 184[\r][\n]"http-outgoing-0 << "Content-Type: text/html; charset=ISO-8859-1[\r][\n]"http-outgoing-0 << "[\r][\n]"http-outgoing-0 << "<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>[\n]"http-outgoing-0 << "<BODY><H1>401 Unauthorized</H1>[\n]"http-outgoing-0 << "Your client does not have permission to get URL /axis-cgi/param.cgi from this server.[\n]"http-outgoing-0 << "</BODY></HTML>[\n]"http-outgoing-0 << HTTP/1.1 401 Unauthorizedhttp-outgoing-0 << Date: Thu, 17 Oct 2013 08:49:23 GMThttp-outgoing-0 << Accept-Ranges: byteshttp-outgoing-0 << Connection: closehttp-outgoing-0 << WWW-Authenticate: Digest realm="AXIS_00408CDC70D4", nonce="000012f5Y6861874913b578893a44bd309340ec1b35c59", stale=FALSE, qop="auth"http-outgoing-0 << WWW-Authenticate: Basic realm="AXIS_00408CDC70D4"http-outgoing-0 << Content-Length: 184http-outgoing-0 << Content-Type: text/html; charset=ISO-8859-1Authentication required10.16.106.31:443 requested authenticationAuthentication schemes in the order of preference: [negotiate, Kerberos, NTLM, Digest, Basic]Challenge for negotiate authentication scheme not availableChallenge for Kerberos authentication scheme not availableChallenge for NTLM authentication scheme not availableSelected authentication options: [DIGEST [complete=true, nonce=null, nc=0], BASIC]http-outgoing-0: Close connectionOpening connection /10.16.197.253->{s}->https://10.16.106.31:443Connecting to /10.16.106.31:443
    Executing request GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1Target auth state: CHALLENGEDGenerating response to an authentication challenge using digest schemeProxy auth state: UNCHALLENGEDhttp-outgoing-0 >> GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1http-outgoing-0 >> Host: 10.16.106.31http-outgoing-0 >> Connection: Keep-Alivehttp-outgoing-0 >> User-Agent: Apache-HttpClient/4.3.1 (java 1.5)http-outgoing-0 >> Accept-Encoding: gzip,deflatehttp-outgoing-0 >> Authorization: Digest username="root", realm="AXIS_00408CDC70D4", nonce="000012f5Y6861874913b578893a44bd309340ec1b35c59", uri="/axis-cgi/param.cgi?action=list&group=Brand.ProdNbr", response="2d38956ea00010fc358831eaa9ee32e5", qop=auth, nc=00000001, cnonce="9e052f64b94a8e5d", algorithm=MD5http-outgoing-0 >> "GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1[\r][\n]"http-outgoing-0 >> "Host: 10.16.106.31[\r][\n]"http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"http-outgoing-0 >> "User-Agent: Apache-HttpClient/4.3.1 (java 1.5)[\r][\n]"http-outgoing-0 >> "Accept-Encoding: gzip,deflate[\r][\n]"http-outgoing-0 >> "Authorization: Digest username="root", realm="AXIS_00408CDC70D4", nonce="000012f5Y6861874913b578893a44bd309340ec1b35c59", uri="/axis-cgi/param.cgi?action=list&group=Brand.ProdNbr", response="2d38956ea00010fc358831eaa9ee32e5", qop=auth, nc=00000001, cnonce="9e052f64b94a8e5d", algorithm=MD5[\r][\n]"http-outgoing-0 >> "[\r][\n]"http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"http-outgoing-0 << "Date: Thu, 17 Oct 2013 08:49:28 GMT[\r][\n]"http-outgoing-0 << "Accept-Ranges: bytes[\r][\n]"http-outgoing-0 << "Connection: close[\r][\n]"http-outgoing-0 << "Authentication-Info: qop=auth, rspauth="0ad3dbb1fb4c486d8cbc27cdd237455f", cnonce="9e052f64b94a8e5d", nc=00000001[\r][\n]"http-outgoing-0 << "Content-type: text/plain[\n]"http-outgoing-0 << "[\n]"http-outgoing-0 << HTTP/1.1 200 OKhttp-outgoing-0 << Date: Thu, 17 Oct 2013 08:49:28 GMThttp-outgoing-0 << Accept-Ranges: byteshttp-outgoing-0 << Connection: closehttp-outgoing-0 << Authentication-Info: qop=auth, rspauth="0ad3dbb1fb4c486d8cbc27cdd237455f", cnonce="9e052f64b94a8e5d", nc=00000001http-outgoing-0 << Content-type: text/plainAuthentication succeededCaching 'digest' auth scheme for https://10.16.106.31:443
    je m’aperçois qu'à un moment il y a un 401 Unauthorized mais pourtant je précise login/mdp , ce qui devrait fonctionner (mal peut être) puisque je récupère le résultat..

  6. #26
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    MMM normalement on peux demander à httpclient plus de logs que ça. Essaie de tout passer en debug. Et configure le logger pour afficher le temps, comme ça on vois clairement où sont les lags

  7. #27
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    c'est plus simple à lire en y mettant de la forme je l'avoue !

    j'ai fait quelques modifications suite à l'erreur 401 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AuthScope authScope = new AuthScope(ipDestinataire, 443);
        		BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
        		credsProvider.setCredentials(authScope,
        	                				 new UsernamePasswordCredentials(CAMERA_LOGIN, CAMERA_PWD));
        		 BasicHttpContext localcontext = new BasicHttpContext(); 
        		httpget.addHeader(new BasicScheme().authenticate(credsProvider.getCredentials(authScope), httpget, localcontext));
    plutot que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    CredentialsProvider credsProvider = null;
     
    credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(ipDestinataire, 443),
    	                				 new UsernamePasswordCredentials(CAMERA_LOGIN, CAMERA_PWD));
     
    HttpClients.custom() .setDefaultCredentialsProvider(credsProvider)
    				.setSSLSocketFactory(sslsf)
    				.build();
    fait gagner 4 à 5 secondes et enlève l'erreur d'authentification


    les nouveaux logs :

    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
     
    oct. 17 11:24:38 DEBUG CookieSpec selected: best-match 
    oct. 17 11:24:38 DEBUG Auth cache not set in the context 
    oct. 17 11:24:38 DEBUG Connection request: [route: /10.16.106.14->{s}->https://10.16.106.31:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20] 
    oct. 17 11:24:38 DEBUG Connection leased: [id: 0][route: /10.16.106.14->{s}->https://10.16.106.31:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20] 
    oct. 17 11:24:38 DEBUG Opening connection /10.16.106.14->{s}->https://10.16.106.31:443 
    oct. 17 11:24:39 DEBUG Connecting to /10.16.106.31:443 
    2013-10-17 11:24:43 >  Debug > APICameraAxis\$1.checkServerTrusted > checkServerTrusted ============= (APICameraAxis.java:851)
    2013-10-17 11:24:43 >  Debug > APICameraAxis\$1.getAcceptedIssuers > getAcceptedIssuers ============= (APICameraAxis.java:840)
    oct. 17 11:24:43 DEBUG Executing request GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1 
    oct. 17 11:24:43 DEBUG Proxy auth state: UNCHALLENGED 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> Authorization: Basic == 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> Host: 10.16.106.31 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> Connection: Keep-Alive 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> User-Agent: Apache-HttpClient/4.3.1 (java 1.5) 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> Accept-Encoding: gzip,deflate 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "GET /axis-cgi/param.cgi?action=list&group=Brand.ProdNbr HTTP/1.1[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "Authorization: Basic Q==[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "Host: 10.16.106.31[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "User-Agent: Apache-HttpClient/4.3.1 (java 1.5)[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "Accept-Encoding: gzip,deflate[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << "Date: Thu, 17 Oct 2013 09:24:46 GMT[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << "Accept-Ranges: bytes[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << "Connection: close[\r][\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << "Content-type: text/plain[\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << "[\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << HTTP/1.1 200 OK 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << Date: Thu, 17 Oct 2013 09:24:46 GMT 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << Accept-Ranges: bytes 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << Connection: close 
    oct. 17 11:24:43 DEBUG http-outgoing-0 << Content-type: text/plain 
    2013-10-17 11:24:43 >  Debug > APICameraAxis.getStringFromCamera > RESULTAT (APICameraAxis.java:688)
     
    oct. 17 11:24:43 DEBUG http-outgoing-0 << "Brand.ProdNbr=M3005[\n]" 
    oct. 17 11:24:43 DEBUG http-outgoing-0: Shutdown connection 
    oct. 17 11:24:43 DEBUG Connection discarded 
    oct. 17 11:24:43 DEBUG http-outgoing-0: Close connection 
    oct. 17 11:24:43 DEBUG Connection released: [id: 0][route: /10.16.106.14->{s}->https://10.16.106.31:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20] 
    Brand.ProdNbr=M3005
    oct. 17 11:24:43 DEBUG Connection manager is shutting down 
    oct. 17 11:24:43 DEBUG Connection manager shut down

  8. #28
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    maintenant on voit clairement dans les logs ue la partie la plus longue, c'est la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oct. 17 11:28:28 DEBUG Connecting to /10.16.106.31:443
    qui met 4 secondes avant de demander la validation du certificat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    2013-10-17 11:28:32 >  Debug > APICameraAxis\$1.checkServerTrusted > checkServerTrusted ============= (APICameraAxis.java:851)
    Est ce que je peux y faire quelque chose ? parce que ça reste énorme pour une simple connexion

  9. #29
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par dumoulex Voir le message
    oct. 17 11:24:39 DEBUG Connecting to /10.16.106.31:443
    2013-10-17 11:24:43 > Debug > APICameraAxis\$1.checkServerTrusted > checkServerTrusted ============= (APICameraAxis.java:851)
    Bon, ça se confirme, la lenteur se trouve en début de connection, on avance

    Soit la demande de connexion est lente -> ce serait un problème de réseau (à confirmer en créant une connexion sur ce port avec un socket)
    Soit la négociation des certificats prend du temps -> Mais si des choses compelxes avaient lieu, il y aurait vraisemblablement des logs supplémentaires... On peux toujours faire dur pas à pas dans le code pour voir où sa bloque....
    oct. 17 11:24:43 DEBUG http-outgoing-0 >> "Authorization: Basic cm9******retiré****[\r][\n]"
    Et le ticket gagnant du je donne mon mot de passe root au forum est aujourd'hui attribué à .....

  10. #30
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    rhaaa ! au pire c'est celui de la camera ! (d'ailleurs il a l'air crypté)

    j'ai essayé de mettre ma machine directement sur le réseau de la camera, donc niveau réseau/routes ça simplifie..

    pourtant toujours 4sec pour se connecter..

    malheureusement, je crois que je ne peux plus rien y faire de mon coté..

  11. #31
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    Ras le bol...


    Apres quelques recherches, je suppose que la librairie httpClient est spéciale, compliquée à implémenter (plusieurs solutions pour des résultats sensiblement différents)

    je ne peux pas me permettre de laisser 5sec par connexion, donc je dois truover une autre solution.

    Au final, une solution que je n'aime pas trop mais qui a fait ses preuves : l'appel à la commande shell....

    je ne precise pas, mais j'ai une lib perso qui fait les input / output qu'il faut, je ne recopie pas tout...


    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
     
    String[] cmd = new String[]{"wget","--no-check-certificate", "--bind-address", ipSource, "https://" + CAMERA_LOGIN + ":" + CAMERA_PWD + "@" + ip + "/axis-cgi/param.cgi?action=list&group=Brand.ProdNbr", "-qO-"};
     
    Runtime r = Runtime.getRuntime();
    Process process = r.exec(cmd);
     
    SortieFluxAvecRetour fluxSortie = new SortieFluxAvecRetour("fluxStandard", process, SortieFlux.CODE_FLUX_STANDARD);
    SortieFluxAvecRetour fluxErreur = new SortieFluxAvecRetour("fluxErreur", process, SortieFlux.CODE_FLUX_ERREUR);
     
    fluxSortie.demarrerThread();
    fluxErreur.demarrerThread();
     
    retourCmd = new RetourCommandeShell(process.waitFor(), fluxSortie.get(), fluxErreur.get());
     
    process.destroy();
    miracle, wget se connecte et renvoie la resultat en quelques millisecondes...

    en tout cas merci quand même pour vos efforts, vous m'avez bien aidé.

    je met résolu, même si je n'utilise pas directement java, j'arrive à faire ce que je veux au départ

  12. #32
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le problème est lié au certificat ou a sa validation. Il a peut être même été généré n'importe comment. Vu le no checkcertificate, wget risque pas d'être impacté par ça.

    L'inconvénient, par contre, c'est que tu fous en l'air ta sécurité

  13. #33
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    pour pouvoir joindre la camera via https, il faut que celle ci génère un certificat auto signé, pas le choix.

    je ne veux pas vérifier ce certificat, car il peut changer si la camera est remplacée.

    quitte à dire j'accepte tout, autant pas le vérifier..

    peux tu développer un peu lorsque tu dis
    " c'est que tu fous en l'air ta sécurité " ?

    ca m’éclairerais dans ma culture securité/web

    pour un peu préciser, lorsque j'utilisais URLConnection, j'utilisais la même méthode pour valider/accepter le certificat, et cela ne prenait que quelques millisecondes.. donc je ne cherche pas trop à savoir pourquoi avec httpClient c'est différent

  14. #34
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par dumoulex Voir le message
    peux tu développer un peu lorsque tu dis
    " c'est que tu fous en l'air ta sécurité " ?
    Ne pas vérifier le certificat SSL, c'est la même chose que ne pas en avoir. N'importe qui peux se faire passer pour ta caméra et chopper le mot de passe. du coup autant ne pas faire de SSL et accéder en http, au moins ca t'évitera les emmerdes du ssl.

  15. #35
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    ok, le fait de passer par https n'apporte rien du tout ?

    parce que les cameras ont login/mdp, si je me connecte en http je risque pas de laisser les mots de passe en clair sur le réseau ou qques failles en plus ?

  16. #36
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    En https les données sont bien encrypté... mais si tu ne peux pas en garantir la source ce n'est pas un moyen sûr pour autant...


    Ok en http les données transitent en clair sur le réseau, et peuvent être "intercepté".

    Mais sauf erreur c'est également possible en https si tu ne vérifies pas le certificat, via une attaque "man-in-the-middle" qui intercepterait le certificat pour t'en envoyer un autre.

    a++

  17. #37
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    ok,

    donc https reste une surcouche qui amène quelque chose.

    Le problème c'est que les certificats des cameras vont être générés à la volée et ne seront pas récupéré par mon prog. Je ne peux donc pas les vérifier..

    et bien merci pour vos infos, je sais que même s'il y a une faille je ne peux guère faire mieux.

  18. #38
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Effectivement, en http on peux sniffer. Pour ça il faut récupérer le flux. Sur un réseau switché, ça veux dire faire "tomber" le switch d'abord, pour pouvoir forwarder tous le traffic vers soit afin de pouvoir l'enregistrer.

    L'autre option, plus simple, c'est directement de se faire passer pour la caméra en piquant son adresse ip. Sur beaucoup de réseaux d'entreprise, c'est extrèmement facile à faire. Suffit d'attrbuer cette ip à ta carte réseau. Rares sont les réseau où on a été s'emmerder à enregistrer chaque mac / ip sur chaque port de chaque switch. Et si je pique son adresse ip, je peux fournir ce que je veux comme certificat SSL, de toutes façons, tu ne le vérifie pas....

  19. #39
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    En fait j'ai mis en place un dhcp avec option 82, donc l'ip de la camera lui est donnée parce qu'elle est branché sur un port précis sur un switch précis. et en plus il y a une liste d'adresses MAC des cameras avant de valider l'IP envoyée.

    après, si tu dis qu'il faut qu'il tape le switch avant je devrais être tranquille.. chaque port à un vlan assigné et un matériel précis, il faudrait donc prendre l'IP de la camera et se brancher sur un port réservé sachant que je détecte les branchements débranchements avec une GTC...


    et bien merci à vous !

  20. #40
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il y a d'autres manières de faire du man in the middle, je parlais des plus évidentes. La sécurité, c'est un domaine complexe. Mais il faut que tu soit conscient qu'un SSL sans validation, c'est la même chose que pas de SSL

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème Requête HTTP Via URL HTTPS
    Par newsdas dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 13/01/2011, 16h55
  2. Exécuter requête HTTP via PHP
    Par calitom dans le forum Langage
    Réponses: 0
    Dernier message: 15/07/2010, 15h11
  3. requêtes http via openssl
    Par gaelle40 dans le forum Réseau
    Réponses: 2
    Dernier message: 10/07/2009, 17h33
  4. [MySQL] Requête trop longue ?
    Par Thomas1434 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 24/03/2006, 21h55
  5. Comment envoyer une requête POST via HTTP ?
    Par pdtor dans le forum C++
    Réponses: 2
    Dernier message: 13/09/2005, 05h54

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