Passbolt est un gestionnaire de mots de passe gratuit et open source basé sur PHP, MySQL et OpenPGP. C'est un serveur d'application auto-hébergé, vous pouvez l'installer sur votre serveur. Passbolt est principalement conçu pour les équipes, mais vous pouvez également l'utiliser comme gestionnaire de mots de passe personnel.
Passbolt est construit sur OpenPGP et possède une API extensible. Côté client, vous pouvez utiliser l'extension de navigateur Passbolt, qui s'appuie sur OpenPGP.js pour la fonctionnalité de chiffrement. Côté serveur, Passbolt utilise l'extension PHP GnuPG et openpgp-php pour effectuer la validation des clés et l'authentification des utilisateurs. Passbolt utilise le protocole GPGAuth pour l'authentification des utilisateurs.
Prérequis
Dans cet article, vous apprendrez comment installer le gestionnaire de mots de passe auto-hébergé Passbolt sur le serveur Rocky Linux. Vous allez installer Passbolt avec PHP 7.4, le serveur MariaDB et le serveur Web Nginx.
Pour cet exemple, nous utiliserons les détails de serveur suivants :
- Système d'exploitation :Rocky Linux 8.4 (obsidienne verte)
- Adresse IP :192.168.1.10
- Nom de domaine, dans cet exemple, j'utiliserai :https://pass.example.io
Commençons maintenant l'installation de Passbolt.
Installer les dépendances des packages
Tout d'abord, vous ajouterez de nouveaux référentiels et installerez certaines dépendances de packages sur le système Rocky Linux.
1. Exécutez la commande suivante pour activer le référentiel "PowerTools" et installer le référentiel Extra Packages for Enterprise Linux (EPEL).
sudo dnf config-manager --set-enabled powertools
sudo dnf install epel-release -y
2. Exécutez la commande suivante pour activer le référentiel PHP 7.4.
sudo dnf module enable php:7.4 -y
3. Ensuite, installez PHP-FPM, MariaDB, Nginx et quelques packages supplémentaires à l'aide de la commande DNF ci-dessous.
sudo dnf install -y nginx mariadb-server mariadb php php-intl php-gd php-mysqlnd php-pear php-devel php-mbstring php-fpm php-json php-ldap gcc gpgme gpgme-devel git policycoreutils-python-utils unzip haveged make gcc
4. Une fois l'installation terminée, exécutez la commande suivante pour télécharger le script d'installation du compositeur PHP.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Maintenant, exécutez à nouveau la commande suivante pour installer le composeur PHP sur l'environnement système.
php composer-setup.php
sudo mv composer.phar /usr/bin/composer
Vérifiez la commande PHP composer comme ci-dessous.
sudo -u nginx composer --version
Vous obtiendrez une sortie similaire à celle ci-dessous.
Composer version 2.1.12 2021-11-09 16:02:04
5. Ensuite, installez les extensions PHP GnuPG à partir du référentiel PHP Extension Community Library (PECL).
pecl install gnupg
Après cela, activez l'extension PHP GnuPG à l'aide de la commande suivante.
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini
6. Maintenant, démarrez et activez certains services à l'aide de la commande systemctl ci-dessous.
sudo systemctl enable --now nginx
sudo systemctl enable --now mariadb
sudo systemctl enable --now php-fpm
sudo systemctl enable --now haveged
Vous avez maintenant terminé l'installation des dépendances des packages pour Passbolt.
Configurer MariaDB et PHP-FPM
Dans cette étape, vous configurerez le mot de passe root MariaDB et le service PHP-FPM.
1. Exécutez la commande suivante pour configurer le mot de passe root MariaDB.
mysql_secure_installation
Tapez un nouveau mot de passe fort pour l'utilisateur root MariaDB et répétez, puis tapez 'Y' à accepter pour toutes les configurations de MariaDB.
2. Ensuite, modifiez le '/etc/php.ini ' fichier de configuration à l'aide de l'éditeur nano.
nano /etc/php.ini
Décommentez l'option 'date.timezone' et modifiez la valeur avec le fuseau horaire de votre serveur.
date.timezone = Europe/Paris
Enregistrez la configuration et quittez.
3. Editez la configuration PHP-FPM '/etc/php-fpm.d/www.conf ' à l'aide de l'éditeur nano.
nano /etc/php-fpm.d/www.conf
Changer l'utilisateur et le groupe par défaut pour PHP-FPM en 'nginx '.
user = nginx
group = nginx
Décommentez le 'listen.owner ' et 'listen.group ', et changez la valeur en utilisateur 'nginx '.
listen.owner = nginx
listen.group = nginx
Enregistrez la configuration et quittez.
Appliquez maintenant la nouvelle configuration PHP-FPM en redémarrant le service PHP-FPM à l'aide de la commande systemctl ci-dessous.
sudo systemctl restart php-fpm
Et vous avez terminé la configuration de base de PHP-FPM et créé un nouveau mot de passe pour l'utilisateur root de MariaDB.
Créer une nouvelle base de données pour Passbolt
Pour créer une nouvelle base de données pour l'installation de Passbolt, connectez-vous au shell MariaDB à l'aide de 'mysql ' ci-dessous.
mysql -u root -p
1. Créez une nouvelle base de données 'passdb' en utilisant la requête suivante.
CREATE DATABASE passdb;
2. Accordez tous les privilèges sur la base de données 'passdb ' au nouvel utilisateur. La requête suivante créera automatiquement un nouvel utilisateur MariaDB 'passbolt '.
GRANT ALL ON passdb.* to [email protected] IDENTIFIED BY 'PassboltdbPass';
3. Recharger tous les privilèges des tables.
FLUSH PRIVILEGES;
Tapez maintenant 'EXIT ' et appuyez sur 'Entrée ' pour vous déconnecter du shell MariaDB.
Passez à l'étape suivante pour démarrer l'installation de Passbolt.
Télécharger Passbolt et installer les dépendances PHP
Pour cette étape, vous allez télécharger le code source Passbolt sur votre serveur et installer les dépendances PHP à l'aide du composeur PHP.
1. Changez le répertoire de travail actuel en '/var/www' et clonez la source Passbolt à l'aide de la commande ci-dessous.
cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt
L'installation du passbolt est '/var/www/passbolt'
2. Changez la propriété du répertoire d'installation de Passbolt en utilisateur 'nginx '.
sudo chown -R nginx:nginx /var/www/passbolt
3. Accédez au répertoire d'installation de Passbolt et installez les dépendances PHP à l'aide de la commande PHP composer. Et assurez-vous d'exécuter la commande PHP composer en tant qu'utilisateur 'nginx '.
cd /var/www/passbolt
sudo -u nginx composer install --no-dev
Si l'installation de toutes les dépendances PHP est terminée, passez à l'étape suivante pour générer la clé GPG.
Générer une clé GPG pour le serveur
Dans cette étape, vous allez générer une nouvelle clé GPG pour le serveur Passbolt.
L'extension PHP actuelle openpgp-php et GnuPG PHP ne prennent toujours pas en charge les phrases secrètes, vous allez donc créer une nouvelle clé GPG sans phrase secrète.
1. Pour générer la clé GPG, exécutez la commande gpg ci-dessous.
gpg --gen-key
Saisissez votre nom et votre adresse e-mail, et n'utilisez pas de phrase secrète.
gpg (GnuPG) 2.2.20; Copyright (C) 2020 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.
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: johndoe
Email address: [email protected]
You selected this USER-ID:
"johndoe <[email protected]>"
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 the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 14F31ED1FBEBAD9A marked as ultimately trusted
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A.rev'
public and secret key created and signed.
pub rsa2048 2021-11-16 [SC] [expires: 2023-11-16]
BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
uid johndoe <[email protected]>
sub rsa2048 2021-11-16 [E] [expires: 2023-11-16]
Notez également l'empreinte digitale de votre nouvelle clé. Pour cet exemple, l'empreinte digitale de la clé est 'BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A '.
2. Ensuite, exportez la clé GPG vers le répertoire d'installation de passbolt '/var/www/passbolt/config/gpg/ '.
gpg --armor --export-secret-keys [email protected] > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export [email protected] > /var/www/passbolt/config/gpg/serverkey.asc
À ce stade, vous devez prendre note de vos informations clés GPG, comme ci-dessous.
- Empreinte digitale :BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
- E-mail :[email protected]
- Clé publique : serverkey.asc
- Clé privée : serverkey_private.asc
3. Ensuite, vous devez générer le répertoire GNUPG pour l'utilisateur nginx à l'aide de la commande suivante.
sudo su -s /bin/bash -c "gpg --list-keys" nginx
Vous verrez une sortie similaire à celle ci-dessous.
gpg: directory '/var/lib/nginx/.gnupg' created
gpg: keybox '/var/lib/nginx/.gnupg/pubring.kbx' created
gpg: /var/lib/nginx/.gnupg/trustdb.gpg: trustdb created
Nou vous avez terminé la configuration de la clé GPG pour Passbolt. Passez à l'étape suivante pour la configuration de Passbolt.
Configuration des blocs serveur Passbolt et Nginx
Dans cette étape, vous configurerez le nom de domaine d'installation de Passbolt, la base de données et la clé GPG.
Avant de commencer, changez votre répertoire de travail en '/var/www/passbolt' répertoire.
export PASSBOLT=/var/www/passbolt/
cd $PASSBOLT
1. Copiez la configuration par défaut dans 'passbolt.php', puis modifiez-la à l'aide de l'éditeur nano.
cp config/passbolt.default.php config/passbolt.php
nano config/passbolt.php
Changez le 'fullBaseUrl ' avec l'installation de votre nom de domaine Passbolt. Pour cet exemple, c'est 'https://pass.example.io'
'App' => [
// comment
'fullBaseUrl' => 'https://pass.example.io',
// comment..
],
Modifiez la configuration de la base de données avec votre utilisateur et votre mot de passe MariaDB ci-dessous.
// Database configuration.
'Datasources' => [
'default' => [
'host' => 'localhost',
//'port' => 'non_standard_port_number',
'username' => 'passbolt',
'password' => 'PassboltdbPass',
'database' => 'passdb',
],
],
Copiez et collez votre empreinte digitale GPG et décommentez les options "public" et "privé".
'gpg' => [
//
// COMMENT REMOVED
//
'serverKey' => [
// Server private key fingerprint.
'fingerprint' => '38E3736DD02860F8CBA57BB99C8B82A2C3A6959F',
'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
],
Enregistrez la configuration et quittez.
2. Ensuite, créez une nouvelle configuration de blocs de serveur Nginx '/etc/nginx/conf.d/passbolt.conf ' à l'aide de l'éditeur nano.
nano /etc/nginx/conf.d/passbolt.conf
Copiez et collez la configuration suivante et assurez-vous de modifier le nom de domaine et le chemin des certificats SSL.
server {
listen 80;
server_name pass.example.io;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name pass.example.io;
root /var/www/passbolt;
ssl_certificate /etc/letsencrypt/live/pass.example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pass.example.io/privkey.pem;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
# ssl_stapling on; # Requires nginx >= 1.3.7
# ssl_stapling_verify on; # Requires nginx => 1.3.7
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
location / {
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_split_path_info ^(.+\.php)(.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
}
location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ {
access_log off;
log_not_found off;
try_files $uri /webroot/$uri /index.php?$args;
}
}
Enregistrez la configuration et quittez.
Vérifiez maintenant la configuration de Nginx et assurez-vous que vous n'obtenez aucune erreur, puis redémarrez le service Nginx.
nginx -t
sudo systemctl restart nginx
3. Ensuite, changez le répertoire de travail en '/var/www/passbolt ' et lancez l'installation de Passbolt à l'aide de la commande ci-dessous.
cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt install" nginx
À la fin du processus d'installation de Passbolt, vous créerez un nouvel utilisateur administrateur pour Passbolt.
Saisissez votre adresse e-mail, votre prénom et votre nom. Copiez ensuite votre lien d'installation Passbolt.
Accéder à Passbolt depuis un navigateur Web
Ouvrez votre navigateur Web et collez le lien d'installation de Passbolt généré par le programme d'installation de Passbolt dans la barre d'adresse.
https://pass.example.io/setup/install/8383584c-2eca-496a-a0ca-4fe35a157d24/fc5ad911-9409-416a-8175-a18cd19dcb20
1. Passbolt détectera automatiquement votre navigateur Web et affichera le lien d'installation de l'extension de navigateur Passbolt.
Cliquez sur le bouton 'Télécharger l'extension ' et installez l'extension de navigateur Passbolt.
2. Tapez une nouvelle phrase secrète forte et cliquez sur 'Suivant ' bouton.
3. Téléchargez le kit de récupération sur votre ordinateur local et cliquez sur 'Suivant ' bouton. Vous pouvez utiliser le kit de récupération pour réinitialiser votre phrase secrète Passbolt.
4. Choisissez la couleur de votre jeton de sécurité Passbolt et assurez-vous de vous souvenir de ces trois lettres. Cliquez sur 'Suivant ' à nouveau.
5. Vous allez maintenant être redirigé vers le tableau de bord utilisateur Passbolt comme ci-dessous.
6. Utilisateurs de la liste Passbolt.
Et vous avez terminé l'installation du gestionnaire de mots de passe Passbolt.
Conclusion
Félicitations ! Vous avez installé avec succès le gestionnaire de mots de passe Passbolt avec PHP-FPM, le serveur MariaDB et le serveur Web Nginx sur Rocky Linux.
Pour l'étape suivante, vous pouvez créer de nouveaux utilisateurs Passbolt pour votre équipe.