HTTPS fait de plus en plus parler de lui, notamment depuis la faille Heartbleed largement médiatisée en 2014.
Il fût un temps où HTTPS était réservé aux transactions très sensibles, comme les transactions bancaires.
On considère aujourd’hui qu’HTTPS est nécessaire dès lors qu’un utilisateur est authentifié sur un site internet, ce afin de protéger sa session web et ses identifiants de connexion.

HTTPS n’est rien d’autre que HTTP, le protocole internet de base permettant d’échanger des données entre un client (navigateur web) et un serveur web auquel on rajoute une couche de sécurité.
En effet, HTTP n’est pas un protocole sécurisé : il n’a été conçu que dans un but fonctionnel, sans prise en compte de contraintes de sécurité.
On ajoute donc à HTTP une couche de sécurité, ou plus exactement on vient encapsuler HTTP dans une connexion sécurisée.
HTTPS permet d’atteindre trois objectifs :
Les autorités de certification sont les établissement délivrant les certificats SSL. Ces organismes sont connus par les navigateurs web, qui acceptent alors sans hésitation les certificats valides.
Un certificat peut être créé par n’importe qui, mais s’il n’est pas délivré par un organisme reconnu, les navigateurs web afficheront une alerte de sécurité.
Exemple d’autorité de certification : Thawte, Go Daddy, Global Sign, DigiCert…
Le SSL Handshake est le processus durant lequel le serveur web et le navigateur vont se mettre d’accord sur le protocole à utiliser (SSL, TLS dans leurs différentes versions), sur la suite de chiffrage à utiliser et enfin sur la clé de session qui sera utilisée dans les communications, une fois le handshake terminé.
Sans rentrer dans les détails les plus fins, le handshake se passe ainsi :
Différents niveaux de chiffrement existent au sein d’HTTPS.
Comment mentionné au début de l’article, HTTPS est l’ajout de sécurité au protocole HTTP, via l’utilisation de SSL ou TLS.
Ces deux protocoles de sécurité existent différentes versions, certaines étant considérées comme obsolètes. SSL2 est obsolète, SSLV3 commence sérieusement à mourir après l’apparition de la vulnérabilité “POODLE” et peut être considéré comme obsolète également.
A utiliser donc : TLS v1.0, v1.1, v1.2.

Par ailleurs les protocoles SSL et TLS utilisent différents algorithmes de cryptage. Les algorithmes utilisés lors d’une communication dépendent de ce que le serveur et le client acceptent.
Au fil du temps, certains de ces algorithmes deviennent trop faibles, et ne doivent donc plus être utilisés :
On notera par exemple les clés de chiffrement inférieures à 128 bits, et les algorithmes RC4, à proscrire.
Il convient donc de veiller à maintenir une configuration à jour des systèmes informatiques et en particulier la configuration HTTPS des serveurs web.
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
ECDHE : key exchange algorithm
ECDSA : authentication
AES_128_CBC : bulk cipher used for message encryption
SHA : MAC algorithm
La mise en place d’HTTPS sur un serveur web est relativement simple, et très bien documentée pour les différents serveurs web du marché.
Les grandes étapes de la mise en place sont les suivantes :
La configuration du serveur web sur les aspects HTTPS comprend notamment :
Vous trouverez ci-dessous les liens vers les pages détaillant l’installation d’SSL sur les trois serveurs web les plus utilisés :
Apache : https://wiki.apache.org/httpd/SSL
IIS : http://www.iis.net/learn/manage/configuring-security/how-to-set-up-ssl-on-iis
Nginx : http://nginx.org/en/docs/http/configuring_https_servers.html
Mozilla a récemment publié une page permettant de générer une configuration sûre d’HTTPS :
Générateur de configuration HTTPS Mozilla
HTTPS n’est pas l’affaire d’une fois. Une fois installé, il faut penser à maintenir l’installation d’HTTPS.
Nous l’avons vu récemment avec la faille heartbleed affectant certaines versions d’openSSL, les mises à jour du système permettent d’éviter certaines failles affectant directement l’utilisation d’HTTPS.
Par ailleurs il convient de se tenir informé du niveau de sécurité des différents protocoles SSL/TLS et des suites de chiffrement, certains devront être désactivés si considérés comme faibles.
Dernier point des plus importants et évident mais parfois oublié : un certificat SSL expire.
Une fois la date limite passée, le certificat n’est plus valide et les navigateurs web affichent des alertes de sécurité très dissuasives, incitant les utilisateurs à fuir le site internet en question. Une grosse perturbation pour le service!