HTTPS
HTTPS (Hypertext Transfer Protocol Secure) est la version sécurisée du protocole HTTP. Il est utilisé pour protéger les échanges de données entre un client (par ex. un navigateur web) et un serveur web. Par défaut, HTTPS fonctionne sur le port 443.
L'adoption généralisée de HTTPS est essentielle pour garantir la sécurité et la confiance sur Internet. Aujourd'hui, la majorité des sites web, et en particulier tous ceux qui traitent des données sensibles, utilisent HTTPS.
Principes de sécurité
HTTPS garantit trois propriétés fondamentales des communications :
- Confidentialité : toutes les données échangées sont chiffrées, empêchant les tiers d'intercepter et de lire les informations (comme les identifiants, cartes bancaires, etc.).
- Intégrité : le protocole détecte si les données ont été modifiées ou corrompues durant le transfert.
- Authenticité : grâce aux certificats TLS, le client peut vérifier l'identité du serveur et s'assurer qu'il ne s'agit pas d'un acteur malveillant (attaque "man-in-the-middle").
Fonctionnement du chiffrement
HTTPS repose sur TLS (Transport Layer Security), successeur sécurisé de SSL (Secure Sockets Layer).
-
Négociation (handshake)
- Le client et le serveur s'échangent des informations pour choisir un algorithme de chiffrement commun.
- Le serveur envoie son certificat TLS au client.
-
Vérification du certificat
- Le client vérifie que le certificat est valide, signé par une autorité de certification (CA) reconnue, et correspond bien au domaine demandé.
-
Echange de clé de session
- Grâce à des algorithmes asymétriques (comme RSA ou Diffie-Hellman), une clé symétrique de session est générée.
- Cette clé sert ensuite à chiffrer toutes les communications.
-
Communication sécurisée
- Une fois la session établie, le trafic est chiffré avec des algorithmes rapides de cryptographie symétrique (comme AES).
L'utilisation de cryptographie asymétrique au départ permet de s'échanger une clé de session symétrique, beaucoup plus rapide pour la suite de la communication.
Certificats TLS
Pour activer HTTPS, un site doit disposer d'un certificat TLS délivré par une autorité de certification (CA, Certificate Authority).
Un certificat TLS assure :
- Authentification : prouve que le serveur appartient bien au domaine concerné.
- Chiffrement : contient la clé publique utilisée par le client pour initier une session sécurisée.
- Confiance : les navigateurs vérifient que le certificat est signé par une CA reconnue et qu'il n'a pas expiré.
Exemples de CA : Let's Encrypt (gratuite), DigiCert, GlobalSign.
Bonnes pratiques
- Utiliser uniquement TLS 1.2 ou TLS 1.3 (les versions précédentes sont obsolètes et vulnérables).
- Renouveler les certificats avant leur expiration (souvent tous les 90 jours pour Let's Encrypt).
- Mettre en place HSTS (HTTP Strict Transport Security) pour forcer l'utilisation d'HTTPS.
- Supprimer le support des anciens algorithmes faibles (MD5, SHA-1, RC4, …).
Note
SSL (Secure Sockets Layer) est désormais obsolète et ne doit plus être utilisé.
TLS (Transport Layer Security) est le protocole standard actuel.
- TLS 1.0 et 1.1 sont obsolètes.
- TLS 1.2 reste largement utilisé.
- TLS 1.3 est la version la plus moderne, plus rapide et plus sécurisée.

Fonctionnement de HTTPS
HTTPS repose sur le protocole TLS (Transport Layer Security), qui définit une série d'étapes appelées handshake TLS. Ce processus permet d'authentifier le serveur et d'établir une clé de session sécurisée avant de commencer à échanger des données chiffrées.
-
Initialisation de la connexion
- L'utilisateur saisit une URL en
https://dans son navigateur. - Le navigateur ouvre une connexion TCP vers le serveur web, généralement sur le port 443.
- Le client envoie un message ClientHello : il propose les versions de TLS qu'il supporte, ainsi qu'une liste d'algorithmes de chiffrement possibles (cipher suites).
- L'utilisateur saisit une URL en
-
Réponse du serveur
- Le serveur répond avec ServerHello, en choisissant la version TLS et l'algorithme de chiffrement compatibles avec le client.
- Il envoie également son certificat numérique, qui contient :
- Son identité (nom de domaine).
- Sa clé publique.
- La signature de l'autorité de certification (CA).
-
Vérification du certificat
- Le client vérifie :
- Que le certificat est signé par une CA de confiance.
- Que le certificat correspond bien au domaine demandé.
- Que le certificat est encore valide (non expiré, non révoqué).
- En cas d'échec, le navigateur affiche un avertissement de sécurité (connexion non sécurisée).
- Le client vérifie :
-
Création de la clé de session
- TLS 1.2 : le client génère un premaster secret, le chiffre avec la clé publique du serveur, puis l'envoie.
- TLS 1.3 (plus moderne) : le client et le serveur utilisent un échange de clés sécurisé basé sur Diffie-Hellman (ECDHE), qui permet d'obtenir directement un secret partagé sans échanger de clé chiffrée.
Dans les deux cas, les deux parties dérivent à partir de ce secret une clé symétrique de session, utilisée pour chiffrer les communications.
-
Déchiffrement et validation
- Le serveur utilise sa clé privée pour déchiffrer (TLS 1.2) ou participer à l'échange de clés (TLS 1.3).
- Les deux parties arrivent au même secret partagé et vérifient qu'elles disposent bien de la même clé de session.
-
Messages "Finished"
- Le client et le serveur s'envoient chacun un message Finished, signé et chiffré avec la clé de session.
- Cela confirme que l'établissement de la connexion chiffrée a réussi.
-
Communication sécurisée
- Les échanges HTTP commencent (requêtes GET, POST, etc.), mais cette fois ils sont :
- Chiffrés (personne ne peut les lire).
- Vérifiés (les modifications sont détectées).
- Authentifiés (le serveur est bien celui attendu).
- Les échanges HTTP commencent (requêtes GET, POST, etc.), mais cette fois ils sont :
-
Fermeture de la session
- Lors de la déconnexion, le client et le serveur détruisent la clé de session.
- Une nouvelle connexion nécessitera un nouveau handshake TLS.

Certificat TLS
Un certificat TLS (Transport Layer Security) est un fichier numérique utilisé pour établir une communication sécurisée entre un client (navigateur, application) et un serveur (site web, API).
Il joue deux rôles essentiels :
- Authentifier le serveur, en prouvant qu'il est bien le propriétaire du domaine.
- Chiffrer les échanges, afin que personne ne puisse intercepter ou modifier les données transmises.
Authentification du serveur
Lorsqu'un client se connecte à un site en https:// :
- Le serveur envoie son certificat TLS.
- Ce certificat contient :
- La clé publique du serveur
- Le nom de domaine et les informations sur le propriétaire
- La signature numérique d'une autorité de certification (CA)
- Le client (navigateur) vérifie :
- Que le certificat est émis par une CA de confiance
- Qu'il n'est pas expiré ou révoqué (via CRL ou OCSP)
- Qu'il correspond bien au domaine demandé
Si la vérification réussit, la connexion est considérée comme sécurisée. Sinon, le navigateur affiche une alerte de sécurité.
Certificate Authority (CA)
Une autorité de certification (CA) est une organisation de confiance qui émet et signe des certificats.
CA racine (Root CA)
- Autorité de certification de plus haut niveau.
- Ses certificats sont directement intégrés dans les systèmes d'exploitation et navigateurs.
- Sa clé privée doit être protégée de manière extrêmement stricte, car elle constitue la base de toute la chaîne de confiance.
Exemples de Root CA :
- DigiCert (USA) → utilisée par de très grands sites comme Microsoft, Apple, Amazon.
- GlobalSign (Belgique/Japon) → présente dans beaucoup de services cloud.
- ISRG / Let's Encrypt (USA, association à but non lucratif) → très utilisée, signe des millions de sites gratuits.
- Entrust (Canada/USA) → utilisée dans le gouvernement, les banques, etc.
CA intermédiaire (Intermediate CA)
- Emet la majorité des certificats utilisés par les sites web.
- Sa légitimité repose sur la signature d'une Root CA.
- Permet de déléguer la confiance et de réduire les risques : si une Intermediate CA est compromise, elle peut être révoquée sans invalider la Root CA.
Exemples d'Intermediate CA :
- R3 → intermédiaire de Let's Encrypt (probablement le plus répandu au monde aujourd'hui).
- DigiCert TLS RSA SHA256 2020 CA1 → intermédiaire de DigiCert, utilisé par Facebook, LinkedIn, etc.
- GlobalSign RSA OV SSL CA 2018 → intermédiaire de GlobalSign.
- Sectigo RSA Domain Validation Secure Server CA → intermédiaire de Sectigo (ex-Comodo).

Types de certificats TLS
Il existe différents types de certificats, qui varient par le niveau de validation effectué par la CA :
DV (Domain Validated)
- Vérifie uniquement la possession du domaine.
- Rapide et peu coûteux.
- Exemple : Etat de Fribourg
OV (Organization Validated)
- Vérifie à la fois le domaine et l'existence de l'organisation.
- Niveau de confiance intermédiaire.
- Exemple : digitec.ch
EV (Extended Validation)
- Vérification approfondie de l'identité de l'organisation.
- Les navigateurs affichent parfois un indicateur visible (nom de l'entreprise).
- Exemple : Apple Inc.

Let's Encrypt
Let's Encrypt est une autorité de certification gratuite et automatisée, fondée en 2014 par :
- Electronic Frontier Foundation (EFF),
- Mozilla Foundation
- University of Michigan
- Akamai Technologies
- Cisco Systems
Caractéristiques :
- Fournit uniquement des certificats DV.
- S'appuie sur des outils comme Certbot pour automatiser l'installation et le renouvellement.
- A fortement contribué à la généralisation de HTTPS sur le web.
Site web : Let's Encrypt

Lien utile
Service d'analyse de la configuration SSL/TLS d'un serveur web : SSL Server Test