Table des matières

Apache

SSL

auto-signé

# export MONDOMAINE="www.thierry-jaouen.fr"
# export EXPIRATION="3650"
# export MONSUJET="/C=FR/ST=France/L=Paris/O=Eez.fr/CN=$MONDOMAINE/emailAddress=postmaster@eez.fr"
# openssl req -x509 -nodes -days "$EXPIRATION" -newkey rsa:2048 -sha256 -keyout "$MONDOMAINE.key" -out "$MONDOMAINE.crt" -batch -subj "$MONSUJET"

Pour info, examiner le contenu:

# openssl x509 -in "$MONDOMAINE.crt" -noout -text

Proxy

HTTP -> HTTPS

Pré-requis:

# a2enmod rewrite

et:

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

Facultatif: Le petit “?” c'est pour éliminer les paramètres éventuelles.

Avec Apache >= 2.4 , et écrira plutôt:

RewriteRule ^ https://%{HTTP_HOST} [R=301,QSD,L]

Source: https://www.philipphoffmann.de/blog/2012/08/16/how-to-discard-the-query-string-in-a-rewriterule-apache-mod_rewrite/

HTTP(S)

Pré-requis: un proxy (par exemple Nginx) qui renseigne l'entête “X-Forwarded-Proto” avec le “scheme” ou protocol: “https” ou “http” ou “rien”.

Apache <2.4 :

SetEnvIf X-Forwarded-Proto https HTTPS=on

Apache >= 2.4 :

<If "%{HTTP:X-Forwarded-Proto} == 'https'" >
  # On est forcement en https: le marquer pour le php, etc...
  SetEnv HTTPS on
</If>

Source: http://www.metaltoad.com/blog/running-drupal-secure-pages-behind-proxy

TLS (ou SSL)

HSTS

Forcer le HSTS (redirection “https” forcé).

Pré-requis: le module “headers” doit être chargé.

# a2enmod headers

Dans mon exemple (derrière un proxy), je préfère appliquer le HSTS que si la connexion est déjà en HTTPS:

<If "%{HTTP:X-Forwarded-Proto} == 'https'" >
  # HSTS ( 30 jours )
  Header always set Strict-Transport-Security "max-age=2592000; includeSubdomains"
</If>