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.comhttps://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"
  • 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
  • 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 …”.

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,