22 Feb 2023, 00:00

Notes sur KeepassXC

Share

Aperçu

Keepass est le client original. En v1 il était disponible uniquement sous Windows. Depuis la V2, il est multiplateforme.
Il est codé en dotnet (et donc mono sous Linux).

KeepassX était un client alternatif à Keepass nativement compatible Linux. Il n’est plus beaucoup développé. Je ne me penche pas dessus.

KeepassXC est un fork communautaire de KeepassX, nativement multiplateforme, codé en C++, et encore mis à jour régulièrement.

Keepass2 et KeepassXC partagent le même format de base de données, le format .kdbx.
Il me semble que Keepass v1 utilisait le format .kdb.

On peut ouvrir un fichier .kdbx alternativement avec Keepass2 et KeepassXC, les modifications sont vues mutuellement.

Par défaut, Keepass2 intègre une icône à la zone de notification.
KeepassXC ne le fait pas, mais on peut activer l’option dans les paramètres. Si on coche “Réduire au lieu de quitter l’appli” et “Afficher une icône dans la zone de notification”, on a le comportement le + souple : la fenêtre est réduite lors de la réduction et disparaît lors de la fermeture ; l’appli étant en permanence en fonctionnement dans la zone de notification.

Pour l’instant je me penche principalement sur KeepassXC. Son dépôt git est ici :
https://github.com/keepassxreboot
et son site officiel ici :
https://keepassxc.org/

On peut l’installer via les dépôts Debian avec la commande
sudo apt install keepassxc

L’intégration de KeepassXC à Firefox nécessite un module. En essayant de l’installer depuis le magasin de modules de Mozilla, je n’ai pas réussi à faire dialoguer les 2. Mais Debian package l’extension, et l’association avec KeepassXC a fonctionné directement (après avoir supprimé l’extension installée manuellement).
sudo apt install webext-keepassxc-browser

Il faut également activer, dans les paramètres de KeepassXC, l’intégration (générique) aux navigateurs, ainsi que l’intégration à chaque navigateur que l’on souhaite utiliser.
L’activation du navigateur Firefox va créer un fichier (qui contient le chemin du proxy KeepassXC) dans ~/.mozilla/native-messaging-hosts/ ; il faut donc la réactiver si on fait des tests à base de dossiers FF tout neuf.

Il me semble que chaque connection entre 1 profil et KeepassXC utilise une “base de données” (qui n’est pas la base de données KDBX, mais simplement le nom du lien entre les 2). On peut le voir dans les paramètre de Keepassxc-browser -> Base de données connectée. Je ne sais pas comment consulter les différents liens dans KeepassXC lui-même.

Une fois l’ensemble paramétré, on voit apparaître le logo de KeepassXC à côté des champs username. Si on clique dessus, cela remplit automatiquement les champs, ou propose de choisir l’identifiant en cas d’IDs multiple enregistrés pour une même URL.

Sync

Le fichier KDBX est synchronisable entre différents postes via des outils externes ; en mon cas Nextcloud.
Après test, il s’avère qu’il est tout à fait possible d’avoir le fichier KDBX déverrouillé sur 2 postes en parallèle. Dès que les modifications sont appliquées par le poste qui n’a pas créé ces modifs, KeepassXC s’actualise tout seul et affiche les modifications, sans besoin de fermer/ouvrir la base ou de redémarrer le logiciel.
La modification sera également accessible sous Firefox sans besoin de le relancer, mais en actualisant toutefois la page.

Import

On peut importer (entre autres) une base de password au format CSV. Ceci permet d’importer les passwords de Firefox.
Un bon guide est ici :
https://blog.bilak.info/2021/04/02/moving-passwords-from-firefox-lockwise-to-keepassxc/

On commence par exporter les mots de passe de Firefox dans un fichier CSV.
Si on utilise une version =< 2.7.0 de KeepassXC (jusqu’à Bullseye pour la version des dépôts Debian), il faut modifier les timestamps via le script présent sur le lien ci-dessus.

Ensuite, dans KeepassXC, “Base de données -> Importer -> Fichier CSV”. On choisit le CSV créé précédemment. Il faut alors créer une nouvelle base de données qui contiendra l’import. On pourra fusionner cette nouvelle base avec une base pré-existante ultérieurement.

Pour l’import, il faut cocher l’option spécifiant que la 1ère ligne contient les noms des champs.
Ensuite, établir cette correspondance :

  • Group -> Not Present
  • Title -> url
  • Username -> username
  • Password -> password
  • URL -> url
  • Notes -> httpRealm (pas obligatoire, mais permet de conserver des informations supplémentaires)
  • TOTP -> Not Persent
  • Icon -> Not Present
  • Last Modified -> timePasswordChanged
  • Created -> timeCreated

Fusion de 2 bases

Ouvrir la base destination.
“Base de données -> Fusionner à partir d’une base de données”. Taper le pass de la base source.
Les dossiers sont respectés lors de l’import.