Protocole applicatif HTTPs :
Qu'est que HTTPs?
HTTPS signifie hypertext transfert protocol secured, c'est la combinaison de HTTP avec SSL ou TSL...
Il permet au visiteur de vérifier l'identité du site auquel il accède grâce à un certificat d'authentification.
Il garantit la confidentialité et l'intégrité des données envoyées par l'utilisateur (notamment des informations entrées dans les formulaires) et reçues du serveur.
Qu'est que SSL?
Le protocole SSL (Secure Socket Layer) a initialement été développé par la société Netscape pour son navigateur WWW. La version 3 fût reprise et étendue par l'IETF (Internet Engineering Task Force) pour le développement et la standardisation de TLS version 1
Constitution de la trace
On observe un échange de trames reposant sur ETHERNET-IP-TCP, ETHERNET-IP-TCP-TSL et ETHERNET-IP-TCP-SSL
Au niveau du serveur, le port employé est le port 443 (le port par defaut pour un serveur https)
Pourquoi cet échange?
Au niveau de la machine 10.40.5.2, on ouvre firefox et on tape l'adresse
https://10.10.1.1[:443]
L'échange est assez conséquent, beaucoup plus que la trace http!
Utilisons le filtre d'affichage de Wireshark! afin de n'avoir que les messages de commande et supervision:
ssl
De 371 trames, on passe à 110 trames :-)
Echange proprement dit
Certificats et PKI
Avant de pouvoir communiquer de manière sécurisée, il est nécessaire de mettre en place un moyen d'établir une relation de confiance entre les différents acteurs. Ceci est réalisé au moyen d'une ICP (Infrastructure à Clés Publiques ou encore Public Key Infrastructure (PKI)). Dans ce type d'infrastructure, une autorité de certification est en charge de la gestion des jeux de clefs privées-publiques attribués aux différents acteurs. Les clés publiques sont incorporées dans des documents signés par l'autorité de certification appelés certificats, avant d'être distribués. Les clés privées correspondantes peuvent également être stockées dans les certificats. Chaque acteur a la possibilité de vérifier la concordance de la signature d'un certificat donné avec la clé publique de l'autorité de certification qui a réalisé cette signature. Ceci permet par exemple à un client de vérifier l'authenticité du certificat présenté par un serveur WWW. Il en va de même dans l'autre sens : un serveur WWW recevant le certificat d'un client s'y connectant, peut en vérifier l'authenticité en vérifiant la signature que l'autorité de certification y a apposée.
Les certificats utilisés par HTTPS respectent la norme X509 version 3. Un tel certificat contient les informations suivantes :
Il peut etre observé à la trame 6.
- Le nom du serveur pour lequel ce certificat à été créé. ici : localhost.localdomain (oups notre travail aurait-il été mal effectué :-s )
- Le nom de l'émetteur du certificat. ici: some-organisation
- Le numéro de série du certificat. ici: v3 .
- La date à partir de laquelle le certificat est valide et la date à partir de laquelle il sera considéré comme étant expiré: exprimé en utc timer: regarder le champ validity.
- La liste des utilisations pour lesquelles ce certificat à été émis.
- La clef publique du serveur, ainsi que le nom de l'algorithme avec lequel s'utilise cette clef: rsa, la clé mesure 140 octets. (visible dans subjectpublickeyinfo)
- La signature de l'émetteur du certificat, ainsi que le nom de la méthode utilisée pour la générer. Ici: sha avec RSA.
long à décoder cette trace! >>
Pour résumer les échanges effectués pour avoir une transmission sucurisée avec HTTPS
Voilà!...