HTTPS et sécurité
HTTP n'est pas sûr
HTTP envoie tout en clair sur le réseau. N'importe qui capable d'intercepter le trafic entre toi et le serveur peut lire exactement ce qui s'échange : tes mots de passe, ton numéro de carte bancaire, tes messages.
C'est le problème de l'attaque man-in-the-middle : quelqu'un se glisse entre toi et le serveur, lit et peut même modifier les données.
// HTTP non sécurisé — tout est lisible
Toi ──▶ POST /login
username=thierry&password=super_secret ← texte en clair !
──▶ Serveur
// N'importe qui sur le réseau peut lire ça
// (Wi-Fi public, routeur compromis, FAI...)
HTTPS = HTTP + TLS
HTTPS, c'est HTTP avec une couche de chiffrement : TLS (Transport Layer Security). Avant d'échanger la moindre donnée, le navigateur et le serveur établissent un canal chiffré. Tout ce qui passe par ce canal est illisible pour un observateur extérieur.
Analogie : HTTP, c'est envoyer une carte postale — tout le monde peut lire en chemin. HTTPS, c'est une lettre dans une enveloppe fermée à clé, avec une serrure que seul le destinataire peut ouvrir.
Les certificats SSL/TLS
Pour établir une connexion HTTPS, le serveur doit prouver son identité avec un certificat TLS. Ce certificat est émis par une Autorité de Certification (CA) — une organisation de confiance reconnue par les navigateurs.
// Ce que contient un certificat
Domaine : monminilab.fr
Propriétaire : Thierry Oliveira
Émetteur : Let's Encrypt (CA)
Valide du : 01/04/2026
Au : 30/06/2026
Clé publique : [longue chaîne de caractères]
Signature CA : [vérifiable par le navigateur]
Le navigateur vérifie que le certificat est signé par une CA de confiance (il en connaît ~150 par défaut). Si le certificat est invalide, expiré ou auto-signé, tu vois l'avertissement "Votre connexion n'est pas privée".
Let's Encrypt a révolutionné le Web en proposant des certificats TLS gratuits et automatiques depuis 2014. Aujourd'hui, plus de 80 % du Web est en HTTPS. Avant Let's Encrypt, un certificat coûtait entre 50 et 300 € par an.
Le handshake TLS
Avant d'échanger des données chiffrées, navigateur et serveur font une "poignée de main" pour convenir de la méthode de chiffrement et s'authentifier mutuellement :
// TLS Handshake simplifié
Navigateur Serveur
1. "Bonjour, je supporte TLS 1.3" ──▶
◀── 2. "Ok, voici mon certificat"
3. Vérifie le certificat (CA ?)
Génère une clé de session ──▶
◀── 4. "Clé reçue, canal sécurisé ✓"
5. Données chiffrées ◀──────────────▶ Données chiffrées
Chiffrement symétrique vs asymétrique
TLS utilise deux types de chiffrement :
- Asymétrique : une clé publique (que tout le monde peut avoir) et une clé privée (gardée secrète). Ce qu'on chiffre avec la publique ne peut être déchiffré qu'avec la privée. Utilisé pendant le handshake pour établir la confiance.
- Symétrique : une seule clé partagée entre client et serveur. Plus rapide. Utilisé pour chiffrer les données une fois le handshake terminé.
// Pourquoi les deux ?
Asymétrique = sécurisé pour échanger une clé, mais lent
Symétrique = rapide pour chiffrer les données, mais comment partager la clé ?
→ Solution : utiliser l'asymétrique pour échanger la clé symétrique !
Puis utiliser la clé symétrique pour tout le reste de la communication.
HTTPS et ce qu'il ne protège pas
HTTPS protège le contenu de tes échanges. Mais il ne protège pas tout :
- Le domaine contacté reste visible (ton FAI voit que tu visites monminilab.fr)
- Les métadonnées (quand, combien de fois, volume de données) sont visibles
- Il ne protège pas contre un site malveillant qui aurait un vrai certificat valide
Un site en HTTPS n'est pas forcément honnête. Le cadenas signifie juste que la connexion est chiffrée — pas que le site est de confiance. Des sites de phishing utilisent HTTPS. Vérifie toujours le domaine, pas seulement le cadenas.
Comment obtenir HTTPS pour ton site
Si tu crées un site web, activer HTTPS est simple et gratuit :
- Cloudflare : active HTTPS automatiquement pour tout domaine qui passe par Cloudflare
- Caddy : serveur web qui active HTTPS automatiquement via Let's Encrypt
- Certbot : outil officiel Let's Encrypt pour Nginx/Apache
- Netlify / Vercel : HTTPS automatique sur tout déploiement
- HTTP = données en clair. HTTPS = HTTP + chiffrement TLS.
- Un certificat TLS prouve l'identité du serveur, émis par une Autorité de Certification.
- Let's Encrypt offre des certificats gratuits et automatiques — plus d'excuse pour rester en HTTP.
- TLS combine chiffrement asymétrique (échange de clé) et symétrique (données).
- HTTPS protège le contenu, pas les métadonnées. Le cadenas ≠ site de confiance.