OVH Cloud OVH Cloud

HTTP CONNECT

2 réponses
Avatar
octane
Bonjour,

j'ai des questions sur la methode HTTP CONNECT mise
en oeuvre lors de l'utilisation d'un proxy.

[si ce groupe n'est pas approprie, merci de me rediriger
sur un adequat]

J'ai lance un sniffer reseau (ethereal) pour suivre une
connection sur un site securise.

port source 1699, port dst 8080
methode HTTP CONNECT
le header HTTP contient la suite de commandes:

CONNECT secure.site.fr:443 HTTP/1.0
User-agent: Mozilla...
Host: secure.site.fr
Content-Length: 0
Proxy-Connection: Keep-Alive
Pragma: no-cache
Proxy-Authorization: Basic xxxxxxxxxxxxxx

Quelques questions:
Quelles sont les lignes obligatoires?
Le content-length egal a 0, ca me surprend, est-ce
normal?
Le Proxy-authorization, comment est il code,
(ethereal me montre les credentials, je suppose
que ce n'est pas crypte).

Pour la suite de la connection, je vois bien des
"continuation or non-HTTP trafic" qui correspond
en gros a ma connection SSL, je pense. Le dump
m'affiche entre autre
"..Thawte Consulting cc1(0&..U....Certification
Services Division1.0...U....Thawte Server
CA1&0$..*.H." qui doit etre le certificat, etc..

Autre question: quel est le fonctionnement du proxy?
Il redirige en transparent depuis le port 1699 de ma
machine vers le port 443 du serveur, ou il redirige
_tout_ le trafic de ma machine vers le port 443 du
serveur?

Merci

2 réponses

Avatar
Xavier Roche
wrote:
Quelles sont les lignes obligatoires?


La première uniquement (le Host: n'est pas obligatoire)

Le content-length egal a 0, ca me surprend, est-ce
normal?


Il n'y a pas de content-length (il n'y a pas de body prévu pour la
méthode CONNECT, qui est une méthode un peu à part) ; cette ligne est un
peu totalement superflue en fait.

Le Proxy-authorization, comment est il code,
(ethereal me montre les credentials, je suppose
que ce n'est pas crypte).


Vous voulez dire chiffré :p
C'est encodé en base64 - plus précisément base64(user:pass)

Pour la suite de la connection, je vois bien des
"continuation or non-HTTP trafic" qui correspond
en gros a ma connection SSL, je pense.


Oui, grosso modo le handshake SSL, qu'on retrouve partout (HTTPs, IMAPs,
SSH..)

Autre question: quel est le fonctionnement du proxy?
Il redirige en transparent depuis le port 1699 de ma
machine vers le port 443 du serveur, ou il redirige
_tout_ le trafic de ma machine vers le port 443 du
serveur?


Il redirige uniquement les données de la socket connectée vers le
serveur ; c'est à dire il interconnecte uniquement deux connexions point
à point, dont l'une est établie par le client sur le proxy, et l'autre
par le proxy sur le serveur en face. C'est bête comme choux.

Avatar
octane
Le content-length egal a 0, ca me surprend, est-ce
normal?


Il n'y a pas de content-length (il n'y a pas de body prévu pour la
méthode CONNECT, qui est une méthode un peu à part)


Ok

cette ligne est un
peu totalement superflue en fait.

c'est ce qui me semblait


Le Proxy-authorization, comment est il code,
(ethereal me montre les credentials, je suppose
que ce n'est pas crypte).


Vous voulez dire chiffré :p
C'est encodé en base64 - plus précisément base64(user:pass)

chiffre, oui. Effectivement, c'est pas super protege.

Un sniffer montre tout ce qui va bien.

Pour la suite de la connection, je vois bien des
"continuation or non-HTTP trafic" qui correspond
en gros a ma connection SSL, je pense.


Oui, grosso modo le handshake SSL, qu'on retrouve
partout (HTTPs, IMAPs, SSH..)

Ok


Autre question: quel est le fonctionnement du proxy?
Il redirige en transparent depuis le port 1699 de ma
machine vers le port 443 du serveur, ou il redirige
_tout_ le trafic de ma machine vers le port 443 du
serveur?


Il redirige uniquement les données de la socket connectée
vers le serveur ; c'est à dire il interconnecte uniquement
deux connexions point à point, dont l'une est établie par
le client sur le proxy, et l'autre par le proxy sur le
serveur en face. C'est bête comme choux.


D'accord. En fait, je m'interroge. J'ai entendu dire qu'on
pouvait faire du ssh par le biais d'un proxy et l'etablissement
d'une connection SSL

La, a moins de patcher un client ssh, je vois pas trop
comment realiser l'action:
si je tape
ssh -p 443 hote.distant.com
ca ne passera pas.
Si j'y vais a coup de telnet:
telnet proxy 8080
host: hote.distant.com:443
etc.. Le proxy m'ouvrira une connection vers le port 443
du serveur distant (imaginons un sshd ecoutant sur ce
port) je ne pourrais pas lancer un ssh derriere, car la
socket n'est pas la meme.

Si je regarde le man ssh, je ne vois pas vraiment pas
d'option d'encapsulation dans un proxy.
Le -o ProxyCommand, peut etre? Mais avec quelle syntaxe?
un genre de
-o '/usr/bin/nc connect 192.0.2.0:8080 %h %p'
et ou mettre le couple user/pass ?

Merci