Wamp et fichiers chiffrés

Flattr this!

Si comme moi vous faites régulièrement du PHP sous Windows, vous utilisez sans doute un package Wamp comme Wampserver ou Xampp, qui permet de tester facilement sous Windows, via un serveur Apache avec module PHP et un serveur MySQL. Une solution qui en configuration par défaut ne fait pas bon ménage avec les fichiers NTFS chiffrés…

Il y a quelques jours, j’ai décidé de chiffrer mes données locales, en utilisant simplement le chiffrement EFS proposé par le système de fichiers NTFS. Ce chiffrement s’appuie sur un certificat de sécurité lié au compte utilisateur Windows (et exportable bien entendu, pour pouvoir récupérer les données sur un autre ordinateur…), ce qui permet normalement d’utiliser le chiffrement en toute transparence, la seule différence visible étant que les fichiers chiffrés apparaissent en vert dans l’Explorateur Windows.

Mais en voulant me connecter à mon instance Wamp quelques jours plus tard, c’est le drame :

Wamp et EFS

Un petit tour dans le error_log d’Apache n’en dit hélas pas beaucoup plus sur l’erreur, laissant entendre qu’il s’agit d’un problème de configuration d’Apache :

Alors, que se passe-t-il donc ? L’explication est en fait très simple. J’utilise Wampserver, qui installe Apache comme un service, ce qui est la meilleure façon d’installer ce genre d’applications sur une machine Windows, en offrant la possibilité de gérer les arrêt/relance du serveur Apache avec les outils standards de gestion des services.

Mais par défaut, tous les services installés sous Windows utilisent un compte utilisateur spécifique (Système local, Service local ou Service réseau), et non le compte utilisateur de celui qui a installé le service. Du coup, le processus d’Apache n’a pas accès à la clé de chiffrement utilisée pour les données d’un compte utilisateur et ne peut pas lire les fichiers chiffrés.

Il y a deux solutions possibles à ce problème. La première, un peu fastidieuse, consiste à donner l’accès aux fichiers à compte Service local. Sous Windows 7, il faudra passer par la ligne de commande pour générer un certificat pour ce compte, puis pour autoriser le porteur de ce certificat à accéder aux fichiers chiffrés (voir ici). Sous Windows 10, il semblerait que ça soit un peu plus simple, il y a un nouveau composant dans la console de gestion qui permet de gérer les certificats de l’ordinateur, et non plus seulement ceux de l’utilisateur, ce qui devrait permettre d’installer un certificat partagé entre tous les comptes (je n’ai par contre pas testé, mon instance Wamp étant installée sous Windows 7).

L’autre solution, beaucoup plus simple, est d’aller modifier les paramètres du service pour qu’il s’exécute directement avec votre compte utilisateur. Pour ce faire, il suffit de passer par le module Services de la console de gestion, de repérer le service Apache dans la liste et de modifier son compte utilisateur de rattachement dans l’onglet Connexion de ses propriétés :

Options de connexion d'un service

Et voilà, il n’y a plus qu’à redémarrer le service et ça marche tout de suite beaucoup mieux :

Wamp et EFS

Laisser un commentaire