Passer votre site en Https
Passer votre site en HTTPS (guide rapide + configs prêtes à coller)
Objectif: activer un certificat SSL/TLS, forcer les redirections en https, corriger le contenu mixte et sécuriser les réglages.
1) Choisir et installer un certificat
- Gratuit et automatisé: Let’s Encrypt (via Certbot, Plesk, cPanel, ou l’hébergeur OVH/Infomaniak/Scaleway, etc.).
- Alternatif: certificat managé par CDN (Cloudflare/Fastly/Akamai) + certificat d’origine sur votre serveur.
a) Installation avec Certbot (Ubuntu/Debian)
- Apache:
sudo apt update sudo apt install certbot python3-certbot-apache sudo certbot --apache -d exemple.com -d www.exemple.com - Nginx:
sudo apt update sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d exemple.com -d www.exemple.com - Renouvellement auto: déjà planifié par un timer systemd. Vérifier:
sudo certbot renew --dry-run
b) Plesk / cPanel
- Plesk: Sites & Domains > SSL/TLS Certificates > Let’s Encrypt > cochez www + HTTP-01/ALPN + auto-renew.
- cPanel: SSL/TLS Status > Run AutoSSL (ou Let’s Encrypt si dispo).
c) Avec Cloudflare (en proxy)
- Activez “Full (strict)” dans SSL/TLS.
- Générez un “Origin Certificate” Cloudflare et installez-le sur votre serveur (évite l’expiration LE si ports fermés).
- Activez “Always Use HTTPS” et “HSTS” après tests (voir § 4).
2) Forcer la redirection HTTP → HTTPS
- Apache (.htaccess à la racine du site):
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]Si vous utilisez WordPress, mettez-le tout en haut, avant d’autres règles. - Nginx (bloc server port 80):
server { listen 80; listen [::]:80; server_name exemple.com www.exemple.com; return 301 https://$host$request_uri; }Bloc HTTPS minimal:server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name exemple.com www.exemple.com; ssl_certificate /etc/letsencrypt/live/exemple.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/exemple.com/privkey.pem; # … votre config/app … }
3) Corriger le “mixed content” (ressources encore en http)
- Utilisez des URLs relatives ou https pour images/CSS/JS.
- WordPress:
- Réglez Réglages > Général: “Adresse WordPress (URL)” et “Adresse web du site (URL)” en https.
- Faites un “search & replace” en base: http://exemple.com → https://exemple.com (via WP-CLI ou plugin “Better Search Replace”).
- Videz tous les caches (plugin, OPCache, CDN).
- CDN: mettez à jour l’origine et activez “Automatic HTTPS Rewrites” (Cloudflare) si besoin.
4) Activer HSTS après validation
Le HSTS force le navigateur à n’utiliser que HTTPS sur votre domaine.
- Ajoutez l’entête (commencez modéré, puis augmentez):
- Nginx:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - Apache:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
- Nginx:
- Conseil: testez 1 jour (86400), puis passez à 1 an. Ne l’activez qu’une fois vos redirections au point.
5) Renforcer la configuration TLS
- Protocoles/chiffres modernes, HTTP/2 (ou HTTP/3 si CDN):
- Nginx (exemple):
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; - Apache:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLEngine on SSLCompression off SSLUseStapling on
- Nginx (exemple):
- En-têtes de sécurité utiles:
- Nginx:
add_header X-Content-Type-Options nosniff; add_header X-Frame-Options SAMEORIGIN; add_header Referrer-Policy strict-origin-when-cross-origin; add_header Permissions-Policy "geolocation=(), microphone=()"; - Apache: équivalents via “Header always set …”.
- Nginx:
6) Tests et vérifications
- SSL Labs Server Test: la note doit être A ou A+.
- curl:
curl -I http://exemple.com # doit renvoyer 301 vers https curl -I https://exemple.com # cert OK, HSTS présent si activé - Console navigateur: aucune alerte “Mixed Content”.
- Sitemaps, canonical, robots.txt: toutes les URLs en https.
- Analytics/Search Console: ajoutez la propriété en https.
7) Spécifique WordPress (récap)
- Mettre les deux URLs en https.
- Search & replace base de données.
- Forcer https sur admin:
define('FORCE_SSL_ADMIN', true); - Cookies sécurisés (si gestion de session custom):
- Set-Cookie avec “Secure; HttpOnly; SameSite=Lax/Strict”.
8) Plan de rollback
- Gardez une sauvegarde de la conf ancienne et un snapshot de la VM.
- Si souci: désactivez temporairement la redirection 301 et revenez à l’ancienne conf SSL, puis corrigez le mixed content.
Vous me dites votre stack (Apache/Nginx, OVH/Plesk/cPanel/Cloudflare, WordPress oui/non) et votre domaine, et je vous fournis:
- la conf exacte adaptée,
