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 ?

Outils et technologies

Certificats SSL/TLS

Un certificat SSL/TLS est nécessaire pour activer HTTPS. Plusieurs solutions existent :

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

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