Avec une installation unique de Dotclear, pour les développeurs feignants comme moi, c’était indispensable.
Pour ça, rien de très compliqué :
D’abord prévoir deux vhosts Apache (ou l’équivalent côté Nginx) avec pour le premier (en HTTP), nommé pour l’exemple unsecure.local
, qui inclut cette definition de variable d’environnement :
SetEnv DC_HTTPS 0
Et pour le 2e, nommé secure.local
:
SetEnv DC_HTTPS 1
Ensuite du côté de la configuration de Dotclear, fichier inc/config.php
:
if (getenv('DC_HTTPS') === false || getenv('DC_HTTPS') === '1') {
define('DC_ADMIN_URL', 'https://secure.local/');
define('DC_ADMIN_SSL', true);
define('DC_SESSION_NAME', 'dcxd-dc2-secure');
} else {
define('DC_ADMIN_URL', 'http://unsecure.local/');
define('DC_ADMIN_SSL', false);
define('DC_SESSION_NAME', 'dcxd-dc2-unsecure');
}
Voilà, vous avez, avec la même installation, l’accès en HTTP avec http://unsecure.local/ et l’accès en HTTPS avec https://secure.local/
Enjoy!
1 De Bernard -
Euh, really ?
if (!getenv('DC_HTTPS') || getenv('DC_HTTPS') === '1')
Si pas DC_HTTPS ou si DC_HTTPS = 1….
2 De Franck -
Oui parce que si la variable n’est pas définie, je préfère que ça passe par le HTTPS.
3 De Bernard -
Oki, j’ai compris (neurone raccroché) Je “retire” mon commentaire précédent ;-)
4 De Philippe -
Et en faisant ça le navigateur ne couine pas ? Je demande parce que j’utilise plutôt un certificat local généré avec mkcert
5 De Franck -
Si bien sûr, le navigateur est pas content, même avec du certif’ mkcert (ou alors j’ai loupé un truc sur son usage).
6 De Franck -
J’ai légèrement modifié le code pour m’assurer que le retour de la fonction
getenv()
était correctement traité (en particulier si la variable n’est pas définie dans la config Apache), d’une part, et par ailleurs j’ai ajouté la définition d’un nom de session spécifique à chaque cas, ce qui permet d’ouvrir les deux URLs dans le même navigateur si celui n’isole pas les contextes.7 De Philippe -
Avec un certificat local mkcert le navigateur affiche le cadenas dans la barre d’adresse et “connexion sécurisée” quand on clique dessus, ça ne fait pas ça chez toi ?
8 De Franck -
Nope, pas moyen de lui faire comprendre que le certificat local est ok. Il me dit à chaque que c’est pas sécurisé et pourtant il m’affiche le certif’ comme valide.
Va comprendre…
9 De Philippe -
Il me semble avoir lu que ça ne marche qu’avec Firefox et Chrome…
10 De Franck -
Peut-être, sauf qu’ici, Chrome Canary + Mac OS X ça hurle.
En même temps spa grave, ça n’est pas plus gênant que ça.
11 De Philippe -
Et dans le vhost tu as bien mis les directives avec le bon chemin pour le certificat ?
SSLEngine on
SSLCertificateFile (...)/.mkcert/dotclear.local.pem
SSLCertificateKeyFile (...)/.mkcert/dotclear.local-key.pem
12 De Franck -
Oui oui, bien sûr.
Doit y avoir une subtilité sur Mac qui n’existe pas sur Linux ou Windows.