Configurer HTTPS sur drupal

Juste après la configuration du certificat SSL chez Gandi, quand on navigue en https, pas de mise en forme, et tous les liens conduisent vers http: Je vide les caches (varnish, APC puis drupal) - idem.

Voici le meme site, vu à gauche avec Firefox 37.0.1, à droite avec Opera 12.16:
coparaison Firefox et Opera: le meme site https
Dans Firefox (cf image à gauche), il n'y a aucune mise en forme, et au survol des liens tous apparaissent en HTTPS (sauf les liens entrés manuellement avec http dans les body via ckeditor) ; si on clique, on retrouve la mise en forme (HTTP).
Dand Opera (cf image à droite), la mise en forme est gardée, et au survol des liens "  ; ".
Infos détaillées :
Infos détaillées (Firefox et opera)

 

Il faut configurer drupal pour, en utilisant dans le settings.php : $conf['https'] = TRUE; ou coté apache. Je teste le module HSTS (existe pour v6 et v7), car semble le plus sécurisé (selon https://www.drupal.org/https-information) mais cela rend le site inaccessible.


Cf https://www.drupal.org/https-information

1. avoir un certificat
2. configurer serveur apache2 (pour ssl)
3. si apache pour http et https, clean url. probablement 2 containers vhosts: un pour port 80 http et un pour https port 443.
Les 2 doivent avoir (ie  .htaccess est utilisé pour conf apache) :
<Directory "/path/to/yoursite">
AllowOverride All
</Directory>

Si avec https il n'y a que la home ok (liens ko) : c'est parce que VirtualHost:443 a besoin de AllowOverride All

4. conf drupal

  • drupal 7 pour avoir mode mixte http et https : sites/default/settings.php ajouter $conf['https'] = TRUE;
    ca permet d'utiliser la meme session sur http et https, mais 2 cookies
    à utiliser avec https://drupal.org/project/securepages
    le cookie http reste vulnérable mais le hacker ne pourra avoir accès qu'à la version http du site, pas sur https
    Drupal 8 ne permet plus le mode mixte.
  • pour améliorer sécurité, envoyer traffic authentifié par https, et utiliser http pour sessions anonymes.
    drupal 8 pour ne plus avoir de warnings : https://drupal.org/project/securelogin
    drupal 7 : $conf['https'] = FALSE; (dans settings.php) et installer securelogin

Note:
drupal 7 et 8 activent automatiquement la conf php session.cookie_secure pour les sites https (cookies de session ssl seul)
drupal 6 : https://drupal.org/project/session443 et https://drupal.org/project/securelogin

  • pour sécurité maximale : le site n'utilise que https, toutes les requetes http sont redirigées vers https.
    drupal 7 : $conf['https'] = FALSE; (dans settings.php).
  • Si on veux rediriger tout le traffic de http://yourdomain.com et http://www.yourdomain.com vers https://youdormain.com alors ajouter dans le .htaccess (juste après le RewriteEngine on) :
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www.domainname\.com*
    RewriteRule ^(.*)$ https://domainname.com/$1 [L,R=301]

 

Commentaires:

  • si tout https et que les liens sont en http, tenter dans settings.php : $_SERVER['HTTPS'] = 'On';

 

 


Cf https://www.drupal.org/https-information (et, plus ancien mais en fr: http://www.hackersrepublic.org/outils/ssl-drupal-gandi où si un seul nom de domaine, dans settings.php on def $base_url="https://domain.fr" puis vider caches: Varnish + APC + drupal puis lancer le cron)

vers ssl gratuit avec cloudfare
voir aussi http://drupal.stackexchange.com/questions/63874/how-can-drupal-be-made-t...  et https://support.cloudflare.com/hc/en-us/articles/204151588-Why-are-my-im...