Définition
SSL (Secure Sockets Layer) et son successeur TLS (Transport Layer Security) sont des protocoles cryptographiques qui securisent les communications sur Internet. Ils fournissent le chiffrement, l'authentification et l'intégrité des données pour le protocole HTTPS.
Bien que SSL soit obsolete depuis 2015 (dernière version : SSL 3.0), le terme "SSL" est encore utilise par habitude. En pratique, tout le monde utilise TLS 1.2 ou TLS 1.3.
Comment fonctionne le TLS Handshake ?
Quand votre navigateur se connecte à un site HTTPS :
- Client Hello : le navigateur envoie les versions TLS et cipher suites supportees
- Server Hello : le serveur choisit la version et la cipher suite, envoie son certificat
- Vérification : le navigateur vérifie le certificat auprès de l'autorité de certification (CA)
- Échange de clés : échange Diffie-Hellman pour générer une cle de session
- Session sécurisée : toutes les données sont chiffrees avec la cle de session (chiffrement symétrique AES)
En TLS 1.3, ce processus est réduit a 1 aller-retour (contre 2 en TLS 1.2), ameliorant la latence.
Types de certificats
| Type | Validation | Délai | Prix |
|---|---|---|---|
| DV (Domain Validation) | Seul le domaine est vérifie | Minutes | Gratuit (Let's Encrypt) |
| OV (Organization Validation) | Organisation verifiee | Jours | 50-200 EUR/an |
| EV (Extended Validation) | Vérification approfondie | Semaines | 200-1000 EUR/an |
| Wildcard | *.exemple.com | Variable | Variable |
Let's Encrypt
Let's Encrypt fournit des certificats DV gratuits et automatises. C'est aujourd'hui le standard :
# Avec Certbot (le plus courant)
sudo certbot --nginx -d exemple.com -d www.exemple.com
# Renouvellement automatique
sudo certbot renew --dry-run
Bonnes pratiques
- TLS 1.3 minimum (désactiver TLS 1.0 et 1.1)
- HSTS (HTTP Strict Transport Security) : forcer HTTPS
- OCSP Stapling : accélérer la vérification de certificat
- Forward Secrecy : protéger les sessions passees même si la cle privée est compromise
- Renouvellement automatique : Let's Encrypt expire tous les 90 jours
Configuration Nginx sécurisée
server {
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/exemple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
add_header Strict-Transport-Security "max-age=63072000" always;
}