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

Dotnet Discussion :

Connexion proxy HTTPS


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut Connexion proxy HTTPS
    Bonjour,

    J'aimerai utiliser Exchange activesync à travers un proxy https qui filtre les user-agent. Le problème c'est que Windows mobile 6 ne permet pas de régler un proxy https, seulement http.

    Je me suis dit que j'allais coder un petit relai pour réaliser l'opération. Voilà comment je l'ai construit:
    1. Activesync est configuré pour se connecter sur le serveur locahost.
    2. TcpListener écoute sur le port 443.
    3. Activesync se connecte -> on récupère le flux streamIN
    4. Connexion TcpClient au proxy https -> on récupère le flux streamOUT
    5. Envoi de la requête "CONNECT serveur:443 HTTP/1.1 + UserAgent" sur streamOUT
    6. Réponse du proxy https "HTTP 200". Donc c'est bon.
    7. Après je fait une simple recopie byte par byte d'un flux à l'autre en uplink et en downlink.

    J'ai 2 questions:
    - Si j'essaie de convertir en ASCII les byte que je transfère c'est illisible. Quand on appelle Read sur un NetworkStream créé à partir de TcpClient on lit le payload TCP ? ou toute la trame TCP ?
    - Activesync n'arrive pas à se synchroniser avec ce relai. Voyez-vous une erreur de conception ?

    Merci pour vos réponses

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Bonsoir,

    J'ai avancé sur mon problème. Je peux répondre à ma première question.

    Effectivement appeller Read() sur un NetworkStream créé à partir de TcpClient permet de lire le payload des trames TCP. Très pratique on ne garde que les trames SSL par exemple sans se soucier de tout ce qui est propre au TCP.
    Il est bien evidemment ridicule de vouloir convertir les octets transmis en chaîne de caractères puisque le protocole SSL ne se lit pas comme du texte. Il faut savoir à quels champs correspondent les octets et on comprend les échanges.

    En me plongeant dans la spécification des trames SSL et en capturant les byte un par un au niveau de mon proxy, j'ai pu retracer les échanges entre activesync et le serveur exchange.

    Le négociation SSL se fait bien entre les deux parties jsqu'au bout. Ensuite devrait commencer les échanges cryptés mais à ce moment là curieusement je reçois l'octet -1 de la part d'Activesync.

    D'après le descriptif de la fonction Readbyte() cela veut dire:
    Valeur de retour
    Cast de l'octet non signé en Int32 ou -1 s'il se situe à la fin du flux
    Que signifie la fin du flux pour une socket ?
    Cela veut dire qu'elle a été fermée ? Si c'est le cas comment garder cette connection vivante pour le reste des échanges ?


    Merci pour votre aide.

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par akrodev Voir le message
    Que signifie la fin du flux pour une socket ?

    Cela veut dire qu'elle a été fermée ? Si c'est le cas comment garder cette connection vivante pour le reste des échanges ?
    Non, ça signifie que tu as lu l'ensemble des octets envoyés, pas que la socket est fermée.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    L'appel à ReadByte() n'est pas bloquant alors ?
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stream.DataAvailable == false
    et équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stream.ReadByte() == -1

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Non, il te retourne un Byte si il y en a un sur le flux, ou -1 dans le cas contraire.

    Ceci dit c'est une méthode de lecture particuliérement inefficiente. (comme mentionné, elle est implémentée en appelent Read sur un tableau de 1 octets).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Je comprends mieux pourquoi mon programme s'arrête alors.
    Merci pour ton aide.

    Dernière question: existe-t-il une méthode bloquante de lecture de stream ?

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

Discussions similaires

  1. Réalisation d'un proxy HTTP, gestion des connexions par fork
    Par Magus (Dave) dans le forum Réseau
    Réponses: 3
    Dernier message: 12/02/2010, 20h16
  2. connexion TCP en java qui transiterait par un proxy HTTPS
    Par nouknouk dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 09/04/2008, 15h56
  3. [Débutant] Connexion en HTTPS via un Proxy ?
    Par ghohm dans le forum Web
    Réponses: 11
    Dernier message: 15/06/2007, 10h15
  4. Passer un proxy HTTP - Tunelling
    Par Celelibi dans le forum Réseau
    Réponses: 17
    Dernier message: 05/10/2006, 23h53

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