Forcer HTTPS ou HTTP sur un site web

Sur les serveurs utilisant AlternC chez Octopuce, on dispose de série de HTTP et de HTTPS avec un certificat valide fourni par Letsencrypt.

Pour choisir de forcer l’utilisation de HTTPS et rediriger l’internaute vers l’url sécurisée, ajoutez ces 3 lignes dans un fichier nommé .htaccess à la racine de votre site web :

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

À l’inverse, si votre site n’est pas prêt pour HTTPS, vous pouvez demander à ce que les pages en HTTPS redirigent vers leur pendant en HTTP. Ajoutez ces 3 lignes dans un fichier nommé .htaccess à la racine de votre site web :

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Attention !

Cependant, cela ne suffit pas pour passer un site en HTTPS. Il faut aussi que votre CMS (application de gestion de contenu, comme WordPress, Spip, Drupal, etc.) sache que les pages servies doivent l’être en HTTPS.

Vous aider sur ce point sort du service d’Octopuce, mais nous avons quelques trucs pour vous :

  • pour WordPress, après avoir modifiée l’URL principale de votre site dans les préférences principales de WordPress, utilisez l’extension Velvet Blues Update URLs qui permet de modifier d’un coup toutes les URL interne en HTTP de votre site pour les passer en HTTPS. (une fois installée et activée, allez dans les utilitaires de WordPress pour procéder au changement en bloc. Une fois terminé vous pouvez enlever cette extension.
  • pour tous les sites, nous vous conseillons de commencer par tester votre site en HTTPS avant d’y forcer les internautes, et de voir si le cadenas est présent ou absent (ou cassé). S’il est absent, il faut vérifier sur la page concernée quels contenus (images, iframes, videos etc.) sont en HTTP et les passer en HTTPS.
    Pour pouvoir faire ce contrôle sur tout votre site, vous pouvez utiliser l’outil Mixed Content Scanner qui regarde toutes les pages de votre site et vous prévient si certaines incluent des contenus en HTTP

Pour éviter le Mixed Content, (que des morceaux de page comme des images, scripts ou feuilles de style soient servies en HTTP alors que le site est en HTTPS) on peut aussi prévenir les navigateurs de s’assurer de ne demander les éléments de page qu’en HTTPS avec la directive suivante pour apache, à ajouter en haut de votre .htaccess :

Header add Content-Security-Policy upgrade-insecure-requests

Notez que si votre site a déjà un entete Content-Security-Policy, cela risque de poser des problèmes de conflits, voyez avec votre développeur !