Mise en place du HTTPS
Le protocole HTTPS (HyperText Transfer Protocol Secure) est indispensable pour sécuriser les échanges entre un client et un serveur web. Il permet de chiffrer les données, d’authentifier le serveur et de garantir l’intégrité des informations transmises.
Pourquoi utiliser HTTPS ?
- Chiffrement : Protège les données sensibles (mots de passe, informations personnelles).
- Authentification : Garantit que le client communique avec le bon serveur.
- Intégrité : Empêche la modification des données en transit.
- SEO : Les moteurs de recherche privilégient les sites en HTTPS.
- Conformité : Obligatoire pour le RGPD et les normes de sécurité modernes.
Outils et technologies
Certificats SSL/TLS
Un certificat SSL/TLS est nécessaire pour activer HTTPS. Plusieurs solutions existent :
- Let’s Encrypt : Gratuit, automatisable, idéal pour la plupart des projets.
- Certificats payants : DigiCert, Sectigo, etc. (pour des besoins spécifiques).
- Certificats internes : Pour des environnements privés (ex : intranet).
Autorités de certification (CA)
Les CA délivrent et signent les certificats. Let’s Encrypt est la plus utilisée pour sa simplicité et son automatisation via Certbot.
Étapes de mise en place
1. Génération du certificat
Avec Let’s Encrypt et Certbot, la commande suivante génère et installe un certificat pour un domaine :
sudo certbot --nginx -d exemple.com -d www.exemple.com
Note : Certbot configure automatiquement Nginx/Apache pour utiliser le certificat. Pour d’autres serveurs web, il faut manuellement spécifier les chemins vers les fichiers de certificat.
2. Configuration du serveur web
Exemple de configuration pour Nginx :
server {
listen 443 ssl;
server_name exemple.com;
ssl_certificate /etc/letsencrypt/live/exemple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.com/privkey.pem;
# Redirection HTTP → HTTPS
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
# Autres directives...
}
3. Renouvellement automatique
Les certificats Let’s Encrypt expirent après 90 jours. Pour les renouveler automatiquement :
sudo certbot renew --dry-run
Ajoutez une tâche cron pour exécuter cette commande régulièrement :
0 0 * * * /usr/bin/certbot renew --quiet
4. Vérification et tests
Utilisez des outils comme SSL Labs pour vérifier la configuration et détecter d’éventuelles vulnérabilités.
Bonnes pratiques
- Utilisez des protocoles TLS modernes (TLS 1.2 ou 1.3).
- Désactivez les protocoles obsolètes (SSLv3, TLS 1.0/1.1).
- Activez HSTS (HTTP Strict Transport Security) pour forcer HTTPS.
- Choisissez des suites de chiffrement robustes.
- Surveillez les dates d’expiration des certificats.
Exemple complet avec Docker
Si votre infrastructure utilise Docker, voici un exemple de configuration pour un conteneur Nginx avec HTTPS :
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./certbot/www:/var/www/certbot
- ./certbot/conf:/etc/nginx/ssl
depends_on:
- certbot
certbot:
image: certbot/certbot
volumes:
- ./certbot/www:/var/www/certbot
- ./certbot/conf:/etc/letsencrypt
command: certonly --webroot -w /var/www/certbot --email contact@exemple.com --agree-tos --no-eff-email -d exemple.com -d www.exemple.com