Introduction

Passbolt est un gestionnaire de mots de passe à vocation collaborative. Il est composé d’un serveur centralisant les mots de passe sous forme chiffrée et d’extensions pour navigateurs Web. Son installation n’est pas tout à fait triviale et nécessite un article dédié. Je vous conseille de lire l’article une fois jusqu’au bout avant de vous lancer dans l’installation du produit.

Cette article n’aurait pas de raison d’être si, d’une part il n’était pas écrit en français alors que la grande majorité de la littérature sur Passbolt est en anglais, et si d’autre part, je n’avais pas eu envie de sortir des sentiers battus par les tutoriels d’installation, outre le fait d’être tombé sur des petits bogues ou des raccourcis documentaires engendrant des problèmes.

Fonctionnalités

Passbolt permet de générer, stocker et partager des mots de passe, le tout sous forme chiffrée. Plus techniquement, il s’appuie sur GnuPG et OpenPGP pour effectuer le chiffrement et le partage des clés.

D’une certaine manière, il n’y a pas de « coffre-fort » dédié par utilisateur. Toutes les clés sont stockées au même endroit. En revanche, n’importe qui ne peut pas lire n’importe quelle clé : il faut qu’il soit inscrit sur chaque clé pour pouvoir la déchiffrer. Soit dit autrement : il existe autant de coffres-fort que de clés. Les utilisateurs admis dans ces coffres possèdent l’un des trois niveaux de privilèges suivant : Peut lire, Peut mettre à jour, Est propriétaire.

Le premier, comme son nom l’indique, ne peut que consulter le mot de passe et ses métadonnées, le second peut modifier le mot de passe stocké, tandis que le propriétaire peut partager ou révoquer le partage du mot de passe.

Enfin, il est possible d’accéder à Passbolt en ligne de commandes, mais ce moyen n’est pas décrit de manière détaillée dans cet article. Globalement, on y trouve des actions d’administration, rien de plus, vous en verrez quelques-unes plus loin.

Installation

Prérequis

Passbolt est une application Web, écrite en PHP et stockant ses données dans une base MySQL. On obtient donc le trio désormais célèbre Apache, MariaDB et PHP. Personnellement, je préfère utiliser une Debian, et donc cet article se concentrera sur cette distribution avec ses habitudes et ses workarounds. Attendez-vous à intégrer le serveur dans une infrastructure existante, en particulier au niveau DNS et messagerie. Passbolt envoie des mails, vous n’y échapperez pas.

Assez parlé, mettons les mains dans le cambouis. Créez une machine virtuelle, installez-y une Debian minimale (j’ai bien dit minimale ! dictionaries-common et tasksel entre autres ne sont pas strictement nécessaires). En pratique, vous choisirez toutes les options que vous voudrez (hébergement mutualisé, installation sur votre poste bureautique, etc…), mais ici je pars du principe que c’est une application à vocation sécuritaire, donc isolée dans une machine virtuelle propre et vidée de tout l’inutile.

Donc grosso modo, tout le monde dehors, sauf le kernel, systemd, bash et apt. C’est également plus facile pour détecter les effets de bord et les paquets manquants. Et quitte à prendre une Debian, autant prendre la dernière en date : Stretch.

Vous aurez donc besoin d’Apache :

apt-get install apache2

De MariaDB :

apt-get install mariadb-server

De PHP et de son intégration à Apache (à lui-seul, ce paquet fait venir également PHP par dépendance) :

apt-get install libapache2-mod-php7.0

De GnuPG, et qui généralement est déjà installé sur les Debian-like pour la vérification des signatures des paquets DEB (je rappelle pour les vieux de la vieille que gnupg2 est désormais un paquet de transition et n’est plus utile) :

apt-get install gnupg

Et de différentes librairies PHP manquantes. N’oubliez pas XML, non mentionné mais dans lequel on retrouve des fonctions auparavant dans le noyau comme utf8_encode() (petites surprises liées à PHP 7) :

apt-get install php7.0-gd php7.0-mysql php7.0-gnupg php7.0-xml

Dans le tutoriel officiel d’installation pour Debian, on fait compiler l’extension GnuPG pour PHP via PEAR. J’ai pris le parti d’utiliser la version pré-compilée par Debian qui n’existe que depuis Stretch, ce qui élimine une grosse part d’installation chiante à base de compilation, et limite assez grandement les dépendances nécessaires. Vérifiez quand même que ces fichiers sont bien présents :

/etc/php/7.0/apache2/conf.d/10-pdo.ini
/etc/php/7.0/apache2/conf.d/15-xml.ini
/etc/php/7.0/apache2/conf.d/20-json.ini
/etc/php/7.0/apache2/conf.d/20-gnupg.ini
/etc/php/7.0/apache2/conf.d/20-pdo_mysql.ini
/etc/php/7.0/apache2/conf.d/20-readline.ini
/etc/php/7.0/apache2/conf.d/20-gd.ini

N’oubliez pas Git, qui sera nécessaire à l’installation et à la mise à jour de l’application côté serveur :

apt-get install git ca-certificates

En voulant épurer un peu trop le système, et si on ne prend pas deux minutes pour installer les certificats racine, Git sera bien ennuyé lorsqu’il voudra se connecter en HTTPS à Github.

Si vous êtes pressés, ou si vous ne voulez pas vous embarrasser des détails par paquet, bourrez toutes ces commandes apt dans une seule, je suis convaincu que ça se passera sans problèmes.

Base de données

Sécurisez un peu votre MySQL, c’est une passoire lorsqu’il est livré d’origine. On demande pas la lune : utilisez donc ce mémo Linux, ça ira bien pour ce qu’on veut en faire ! De toute façon, le serveur n’écoute pas à l’extérieur par défaut, mais ce n’est quand même pas une raison pour le laisser en mode open-bar sur le serveur lui-même.

Une fois cette étape effectuée, connectez-vous sur le serveur en ligne de commande, créez un utilisateur dédié et créez une base de données.

# mysql -u root
> CREATE DATABASE passbolt CHARACTER SET utf8 COLLATE utf8_general_ci;
> CREATE USER 'passbolt'@'localhost' IDENTIFIED BY 'MDPAllezÀThouars-EtThouarsCestLoin';
> GRANT ALL PRIVILEGES ON passbolt.* TO 'passbolt'@'localhost';
> FLUSH PRIVILEGES;
> EXIT;

Quelques remarques :

  • Oui, en root, même en ayant sécurisé le serveur, on peut rentrer sans mot de passe… Cela dit, quand on est root, péter le root MySQL du serveur local, c’est facile, alors autant ne pas s’encombrer avec une surdose de sécurité. Toutefois, s’il vous dit qu’il veut absolument un mot de passe, rajoutez l’option -p et saisissez le mot de passe que vous avez indiqué quand vous avez sécurisé le serveur. Le pourquoi du comment du « yapadepassword » n’est pas le but de cet article.
  • Oui, on fait ça dans les règles : chaque application a son utilisateur et sa base de données, et ne travaille pas avec le compte root ! Même si certains peuvent être choqués de leurs mauvaises habitudes…
  • Et remarquez également qu’on a bien forcé l’utilisation de l’UTF-8. J’ai eu un effet de bord à force de ne garder que les configurations par défaut, et ma première installation a échoué sur une table de sessions au profit de CakePHP. Après recherches, c’est bien le fait d’expliciter l’usage d’UTF-8 qui a résolu le problème.
  • Vous n’avez pas encore saisi de données ou défini de structure dans la base, c’est normal, ça vient un peu plus loin.

Détails de configuration

Vérifiez que le module rewrite d’Apache2 est bien activé, Passbolt exploitant beaucoup les réécritures :

a2enmod rewrite

On considère que vous avez réglé correctement les paramètres de votre machine virtuelle pour lui attribuer une IP et un nom DNS qui se résout correctement sur l’hôte lui-même et sur le reste du réseau. Je ne m’attarde pas là-dessus.

Dans cette article, et bien que d’habitude je sois pointilleux sur la sécurité, on fera l’impasse sur le certificat pour alléger la lecture. Vous trouverez pléthore d’information sur Internet pour générer des certificats et concevoir des hôtes virtuels Apache dédiés aux connexions SSL. Le fait de sécuriser les connexions après coup n’est pas bloquant pour Passbolt. Cela dit, ne mettez pas en production l’architecture telle que présentée ici et prenez le temps de forcer SSL ! Ou alors vous assumez les risques de vol d’information ou d’usurpation d’identité !

Installation de l’application

Vous l’aurez deviné si vous avez été attentif, pas d’apt sur ce coup-là mais du git, et pas n’importe où :

# cd /var/www
# git clone https://github.com/passbolt/passbolt_api.git
# mv passbolt_api passbolt
# chmod -R ug+w passbolt/app/tmp
# chmod -R ug+w passbolt/app/webroot/img/public

Vous êtes évidemment libre de choisir le dossier de destination, charge à vous ensuite d’adapter les configurations.

Création de la clé GPG du serveur

Les échanges entre le client et le serveur, en plus d’être chiffrés par SSL en configuration normale, sont authentifiés par GPG. On a donc besoin de générer une clé GPG pour le serveur lui-même. En revanche, il faut se rappeler que l’application PHP sera exécutée par le serveur Web, et donc pas en root mais en www-data sur une Debian.

Les propriétés de cet utilisateur nous indiquent qu’il ne peut pas se connecter avec un shell classique (/usr/sbin/nologin) et que son répertoire de travail par défaut est /var/www :

$ grep www-data /etc/passwd
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Sans refaire la moitié de la configuration du système, il nous faut créer une clé GPG exploitable par cet utilisateur qui ne peut pas se connecter.

# mkdir /var/www/.gnupg
# gpg --homedir /var/www/.gnupg --gen-key
gpg (GnuPG) 2.1.18; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: keybox '/var/www/.gnupg/pubring.kbx' created 
gpg: new configuration file '/var/www/.gnupg/gpg.conf' created
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Passbolt Server
Email: passbolt@example.com
You selected this USER-ID:
    "Passbolt Server" <passbolt@example.com>

Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Please enter the passphrase to
protect your new key
Passphrase:
Repeat:
You have not entered a passphrase - this is in general a bad idea!
Please confirm that you do not want to have any protection on your key.
  Yes, protection is not needed
  Enter new passphrase
[ye]? Y
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Please enter the passphrase to
protect your new key
Passphrase:
Repeat:
You have not entered a passphrase - this is in general a bad idea!
Please confirm that you do not want to have any protection on your key.
 Yes, protection is not needed
 Enter new passphrase
[ye]? Y
gpg: /var/www/.gnupg/trustdb.gpg: trustdb created
gpg: key ABCDEF0123456789 marked as ultimately trusted
gpg: directory '/var/www/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/var/www/.gnupg/openpgp-revocs.d/98765432EDCBAF9876543210ABCDEF0123456789.rev'
public and secret key created and signed.

pub   rsa2048 2017-08-21 [SC] [expires: 2019-08-21]
      98765432EDCBAF9876543210ABCDEF0123456789
      98765432EDCBAF9876543210ABCDEF0123456789
uid                      Passbolt Server <passbolt@example.com>
sub   rsa2048 2017-08-21 [E] [expires: 2019-08-21]

# chown -R www-data:www-data /var/www/.gnupg

Remarquez qu’on a évité certaines questions, notamment concernant la longueur de la clé et l’algorithme. Par défaut, les valeurs sont tout à fait correctes pour une utilisation en production. Par contre avec les valeurs par défaut, la clé expire dans deux ans, ce qui sera l’occasion de trouver comment modifier cette clé sans tout casser !

En revanche, les informations que vous saisirez dans l’assistant seront immuables dès que vous mettrez l’application en production. Vérifiez donc bien avant de valider chaque formulaire. Pour la démonstration, on supposera que vous avez choisi l’utilisateur Passbolt Server ayant l’adresse de messagerie passbolt@example.com. Ne saisissez pas de mot de passe ! PHP-GnuPG ne sait pas (encore ?) les gérer. Si votre clé est protégée par un mot de passe, l’installation finira par se bloquer.

Les questions concernant le mot de passe sont répétées : c’est normal car deux clés différentes sont générées. Là encore, cet article n’est pas le bon endroit pour expliquer ce comportement.

N’oubliez pas de modifier les propriétés des fichiers du dossier .gnupg à la fin du traitement, sans quoi PHP ne pourra pas accéder aux clés (commande chmod, tout à la fin du bloc ci-dessus).

Configuration de l’application

On a encore pas mal de fichiers de configuration à bricoler avant de commencer à exploiter le logiciel.

Avant d’oublier, fabriquons tout de suite l’hôte virtuel Apache de l’application :

# cat > /etc/apache2/sites-available/passbolt.conf <<EOF
> <VirtualHost *:80>
>   ServerName passbolt.example.com
>   ServerAdmin passbolt@passbolt.example.com
>   DocumentRoot /var/www/passbolt
>   ErrorLog \${APACHE_LOG_DIR}/error-passbolt.log
>   CustomLog \${APACHE_LOG_DIR}/access-passbolt.log combined
>   <Directory /var/www/passbolt>
>     AllowOverride All
>   </Directory>
> </VirtualHost>
> EOF
# a2ensite passbolt
# systemctl restart apache2

Puis, il faut extraire les clés GPG au profit de Passbolt :

# gpg --homedir /var/www/.gnupg --armor --export-secret-keys passbolt@example.com > /var/www/passbolt/app/Config/gpg/private.key
# gpg --homedir /var/www/.gnupg --armor --export passbolt@example.com > /var/www/passbolt/app/Config/gpg/public.key
# chmod o-rwx /var/www/passbolt/app/Config/gpg/private.key

Ensuite, on configure le framework CakePHP :

# cp /var/www/passbolt/app/Config/core.php.default /var/www/passbolt/app/Config/core.php
# nano /var/www/passbolt/app/Config/core.php

Trouvez et modifiez les lignes suivantes :

Configure::write('Security.salt', '<mettez des caractères aléatoires>');
Configure::write('Security.cipherSeed', '<mettez des nombres uniquement>');
Configure::write('App.fullBaseUrl', 'http://passbolt.example.com');

Je vous conseille de remplacer des caractères dans la chaîne existante afin de conserver une longueur au moins égale. Ne laissez pas les valeurs par défaut, le framework sait les détecter et vous avertira, en plus de l’affaiblissement que ça peut générer en termes de sécurité. Quant à l’URL, remarquez que j’ai bien indiqué un nom de domaine valide (par rapport à ma plateforme, hein !) et que j’ai retiré le S pour ne conserver que HTTP. Ce domaine doit impérativement être reconnu par le serveur et par les futurs clients. Attention : par défaut la ligne concernant l’URL est commentée. Pensez donc à bien retirer les deux slashs devant Configure.

Dans le même esprit, on configure l’accès à la base de données :

# cp /var/www/passbolt/app/Config/database.php.default /var/www/passbolt/app/Config/database.php
# nano /var/www/passbolt/app/Config/database.php

Trouvez et modifiez en adaptant à votre configuration les lignes suivantes :

public $default = array(
 'datasource' => 'Database/Mysql',
 'persistent' => false,
 'host' => 'localhost',
 'login' => 'passbolt',
 'password' => 'MDPAllezÀThouars-EtThouarsCestLoin',
 'database' => 'passbolt'
);

Troisième tour, c’est l’application Passbolt cette fois :

# cp /var/www/passbolt/app/Config/app.php.default /var/www/passbolt/app/Config/app.php
# nano /var/www/passbolt/app/Config/app.php

C’est là qu’on saisit la clé GPG à utiliser et quelques autres paramètres :

$config = [
  'App' => [
    'ssl' => [
      'force' => false,
    ],
  'GPG' => [
    'env' => [
      'home' => '/var/www/.gnupg'
    ],
    'serverKey' => [
      'fingerprint' => '98765432EDCBAF9876543210ABCDEF0123456789',
      'public' => APP . 'Config' . DS . 'gpg' . DS . 'public.key',
      'private' => APP . 'Config' . DS . 'gpg' . DS . 'private.key',
    ]
  ]
];

Je n’ai mis ici que les paramètres qui ont été modifiés. Le fichier par défaut contient d’autres éléments actifs qu’il ne faut pas éditer.

Pensez bien à modifier le fingerprint de la clé afin d’y placer celui que vous avez généré précédemment. Vous pouvez le ré-obtenir avec :

# gpg --homedir /var/www/.gnupg --list-keys

Dernier fichier, on s’occupe de l’envoi de messages :

# cp /var/www/passbolt/app/Config/email.php.default /var/www/passbolt/app/Config/email.php
# nano /var/www/passbolt/app/Config/email.php

Adaptez avec les paramètres de votre infrastructure. Je considère que le réglage du serveur de messagerie est totalement hors de propos. Ici encore, les données sont fictives et dépendent de l’exemple que j’ai choisi en fil rouge :

public $default = array(
 'transport' => 'Smtp',
 'from' => array('passbolt@example.com' => 'Passbolt Server'),
 'host' => 'smtp.example.com',
 'port' => 587,
 'timeout' => 30
 'username' => 'passbolt'
 'password' => 'Passw0lt'
 'tls' => true;
);

Cette fois, on est prêt pour agiter un peu l’ensemble logiciel. On va demander au framework CakePHP d’installer l’application avec les scripts fournis par Passbolt. Cependant, il est vivement recommandé de lancer le framework avec les droits du serveur. Avant de lancer la moindre commande, il faut bien penser à rendre accessible les fichiers à l’utilisateur www-data. Notez donc le petit tour de passe-passe pour se connecter en tant que www-data alors qu’on a constaté qu’il était volontairement désactivé :

# chown -R www-data:www-data /var/www/passbolt
# su -s /bin/bash www-data
$ cd ~/passbolt/app/Console/
$ ./cake install --no-admin

Si vous avez bien configuré vos éléments, l’installation se déroulera sans problèmes. Malheureusement, il y a tellement d’écueils possibles que je ne peux les énumérer ici. En revanche, je peux vous donner quelques conseils : toute application est capable de dire où elle a mal. Passbolt est très bon élève là-dessus avec son utilitaire healthcheck :

$ ./cake passbolt healthcheck

Et pour conclure l’installation, pensez à créer un compte administrateur.

$ ./cake passbolt register_user -u passwdmanager@example.com -f Password -l Manager -r admin

L’utilitaire vous donne un lien alambiqué pour pouvoir vous connecter. Je vous déconseille vivement de l’utiliser tant que vous n’avez pas installé l’extension Passbolt dans votre navigateur. Sans quoi vous devrez détruire et recréer votre utilisateur. Et là, c’est le drame !

Un dernier détail : plutôt que de recopier le lien sur un bout de papier ou lettre par lettre dans la barre d’adresse du navigateur, je vous ai dit que Passbolt envoyait des messages, et en particulier ce fameux lien que vous avez fait générer au système. Mais les minutes, voire les heures passent et rien n’arrive dans votre boîte. On a oublié un détail : CakePHP stocke les emails en base et nécessite l’exécution d’un utilitaire dédié pour l’envoi. Essayez donc de créer une tâche planifiée pour effectuer cet envoi. J’ai choisi de ne faire exécuter l’utilitaire que toutes les 5 minutes :

# touch /var/log/passbolt.log
# chown www-data:www-data /var/log/passbolt.log
# crontab -u www-data -e
*/5 * * * * /var/www/passbolt/app/Console/cake EmailQueue.sender > /var/log/passbolt.log

Et enfin vous pouvez utiliser l’application ! Cliquez sur le lien que vous avez reçu par mail et laissez-vous guider.

Premiers pas

Lorsque vous vous connectez au site pour la première fois à l’aide du lien fourni, Passbolt vous présente un assistant génération de clé. Il s’agit de votre clé GPG nécessaire aux échanges avec le serveur et au chiffrement de vos mots de passe.

Première étape

La première étape vous permet de vérifier que le serveur est légitime : vous devriez retrouver en emprunte de clé ce que vous avez saisi dans le fichier app.php. Si en local ou dans une très petite infrastructure, la probabilité d’attaque par usurpation est très faible, elle grandit lorsque le réseau interne devient complexe. Si la clé présentée vous semble légitime, cochez la case et passez à l’étape suivante. Remarquez dès à présent le contenu de la barre d’adresse : vous êtes sur une adresse technique et sur une page générée et gérée par le plugin Passbolt. Les informations ne quittent pas encore le navigateur.

Deuxième étape

La deuxième étape consiste à remplir des informations personnelles pour la génération de votre clé ou alors d’importer une clé que vous auriez généré auparavant, par exemple avec un autre navigateur ou un ancien profil que vous avez détruit. Ici, on considérera que vous installez et configurez Passbolt pour la première fois. Saisissez vos informations personnelles et passez à l’étape suivante.

Troisième étape

La troisième étape vous demande un mot de passe. Pour mémoire, une étude récente indique que la sécurité d’un mot de passe est avant-tout due à sa longueur, sans quoi il reste vulnérable aux attaques par dictionnaire, même lorsque vous remplacez des lettres par des caractères spéciaux. En effet, les techniques se sont adaptées à ces substitutions, et elles sont moins efficaces qu’il y a quelques années. Saisissez donc un mot de passe et passez à l’étape suivante.

La troisième étape (bis) vous propose de télécharger une copie de votre clé sous forme chiffrée, donc protégée par le mot de passe que vous avez indiqué juste avant. Faites une copie de sauvegarde, c’est important ! Sinon vous perdrez tous vos mots de passe personnels. Lorsque vous êtes prêt, passez à l’étape suivante.

Quatrième étape

La quatrième étape vous permet de choisir une couleur et un jeu de trois lettres. Indiquez ce qui vous plaît et souvenez-vous en. C’est une protection anti-imitation qui vous garantit d’accéder au bon plugin et à la bonne interface Passbolt. Sans quoi, il est possible d’imiter parfaitement la page du plugin Passbolt et vous voler votre mot de passe. Pensez à vérifier ces valeur à chaque fois que vous entrerez le mot de passe de votre clé GPG. S’ils ont choisi des couleurs, c’est justement parce que, spontanément, un humain pensera « tiens, la couleur est pas la même aujourd’hui ». Soyez vigilant avec ce petit déclic ! Courage, c’est bientôt fini, passez à la dernière étape !

Dernière étape

Enfin, la connexion. Remarquez que cette fois, vous êtes bien sur la page d’authentification du serveur. Vérifiez bien que l’encart concernant Firefox possède un fond vert, comme celui concernant l’extension GnuPG. De toute façon, si l’un des deux plante, il ne vous laissera pas saisir votre mot de passe. Comme je vous ai déjà dit, vérifiez bien la couleur et les trois lettres à côté et dans le champ password. Saisissez-le et cliquez sur Login.

Surprise : dans Mozilla Firefox, au moment où je rédige cet article, ça ne fonctionne pas pour une raison mystérieuse. Un Chromium fraîchement installé remplira parfaitement son œuvre, y compris en récupérant la clé sauvegardée à l’étape 3 bis.

Et miracle, ça fonctionne ! Bienvenue à la maison !

Mise à jour

Petit plus : comment met-on à jour l’application ? Plutôt simple grâce à git :

# cd /var/www/passbolt
# su -s /bin/bash www-data
$ git fetch

Là les fichiers sont à jour. Maintenant, il y a peut-être des évolutions au schéma de base de données. Vous pouvez consulter s’il existe une mise à jour, et éventuellement l’appliquer :

$ cd app/Console
$ ./cake Migrations.migration status
[...]
$ ./cake Migrations.migration run all
[...]

Pour la procédure complète, je vous suggère vivement d’aller consulter le guide de mise à jour officiel en anglais, car j’ai réellement raccourci la procédure, sans autre forme de précaution.

Considérations complémentaires

Passbolt est un très bon produit mais son fonctionnement à base de composants Web n’est pas optimal en termes de sécurité. Je le compare notamment avec Keepass2 qui efface automatiquement le presse-papiers ou qui permet d’effectuer la saisie automatique. Très clairement, Passbolt ne peut pas être aussi robuste de par sa conception, mais l’équipe travaille sur de nombreuses fonctionnalités et tient à jour une roadmap.  De fait, je recommande de ne pas utiliser Passbolt sur des machines dont la sécurité est douteuse, en particulier le navigateur Web. Ceci dit, de nombreux gestionnaires y compris chez les payants et/ou non-libre sont également concernés. Notez que je m’adresse là aux plus paranoïaques, et non aux administrateurs plus modérés.

En revanche, il bat largement Keepass2 sur la souplesse apportée en travail collaboratif comme je l’ai décrit en introduction. Je considère d’ailleurs que ces deux produits peuvent être complémentaires dans une infrastructure et ne visent pas exactement le même « marché ». Et surtout, Passbolt ne possède pas les limitations de ses concurrents, soit en nombre de clés stockées, soit en nombre d’utilisateurs dans la « communauté » (sous-entendu pour une instance Passbolt dans une entreprise par exemple).

Passbolt est un outil encore jeune. Leur site indique clairement que c’est une « Alpha ». Bien que leur conception et leur développement se fasse en mettant la sécurité au centre de la réflexion, et malgré leur rigueur et la fiabilité des produits qu’ils utilisent au sein de leur solution, ils aimeraient que des audits plus approfondis par des experts chercheurs en sécurité les aient à consolider leurs solutions. Je rejoins un reproche qui leur a été fait sur LinuxFR dans les commentaires : les métadonnées sont stockées en clair dans la base de données, en particulier le nom de l’application et l’identifiant associé au mot de passe. Tant que l’infrastructure (serveur + navigateur Web) est sécurisée, ça va, mais si le serveur venait à être compromis, certaines informations pourraient fuiter.

Il est difficile d’expliquer comment Passbolt gère le chiffrement des mots de passe et leur partage. Il faut étudier le code pour trouver comment l’application fonctionne, ce qui nécessite d’avoir des connaissances, non seulement en programmation en PHP et en JavaScript, mais aussi dans l’ensemble des frameworks utilisés. Moyennant un peu de temps, ceci pourrait faire l’objet d’un nouvel article. J’ai souhaité en parler ici, mais j’ai renoncé par manque de documentation abordable, et de temps pour retourner complètement le Web.

Ne me faites pas dire ce que je n’ai pas dit : dans sa version actuelle, c’est déjà un très bon produit qui mérite d’être mis en avant et exploité dès maintenant. C’est d’ailleurs pourquoi je le présente ici. J’ai hâte de voir les nouvelles fonctionnalités arriver, notamment la gestion des groupes afin de partager un lot de mots de passe en un clic. De plus, leur API est suffisamment souple pour envisager la création de comptes techniques dont le but est de mettre à jour automatiquement certains mots de passe d’une infrastructure.

Et enfin j’aime bien l’interface Web qu’ils ont fait, c’est assez intuitif, et leur charte graphique est cohérente entre leur site Web, l’application auto-hébergée et le plugin.

Passbolt, c’est bien ! ‘Faut en manger !