Comment installer Passbolt Self-Hosted Password Manager sur CentOS 8

Passbolt est un gestionnaire de mots de passe open-source qui te permet de stocker et de partager ton mot de passe en toute sécurité. Il est conçu pour les petites et moyennes organisations afin de stocker et de partager l’identifiant de connexion entre les membres de l’équipe. Il est auto-hébergé et disponible dans des éditions communautaires et par abonnement.

Dans ce tutoriel, nous allons te montrer comment installer le gestionnaire de mots de passe Passbolt avec Nginx et Let’s Encrypt SSL sur CentOS 8.

Conditions préalables

  • Un serveur exécutant CentOS 8.
  • Un nom de domaine valide pointé avec l’IP de ton serveur.
  • Un mot de passe root est configuré sur ton serveur.

Installer le serveur LEMP

Tout d’abord, installe Nginx et le serveur de base de données MariaDB à l’aide de la commande suivante :

dnf install nginx mariadb-server -y

Ensuite, tu devras installer la dernière version de PHP et les autres extensions PHP requises sur ton serveur. Par défaut, la dernière version de PHP n’est pas disponible dans le repo par défaut de CentOS. Tu devras donc ajouter les repo EPEL et REMI à ton système.

Tu peux ajouter les deux dépôts avec la commande suivante :

dnf install epel-release -y
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

Ensuite, désactive le repo PHP par défaut et active le repo REMI avec la commande suivante :

dnf module reset php
dnf module enable php:remi-7.4

Ensuite, installe PHP avec les autres dépendances requises en exécutant la commande suivante :

dnf install php php-fpm php-intl php-gd php-mysqli php-json php-pear php-devel php-mbstring php-fpm git make unzip -y

Après avoir installé tous les paquets, tu devras modifier le fichier de configuration de PHP-FPM et changer l’utilisateur et le groupe en Nginx.

nano /etc/php-fpm.d/www.conf

Change les lignes suivantes :

user = nginx
group = nginx

Enregistre et ferme le fichier puis change la propriété du répertoire de session :

chgrp nginx /var/lib/php/session

Ensuite, démarre le service Nginx, MariaDB et PHP-FPM et active leur démarrage au redémarrage du système avec la commande suivante :

systemctl start mariadb nginx php-fpm
systemctl enable mariadb nginx php-fpm

Ensuite, tu devras installer l’extension GNUPG sur ton système. Tu peux l’installer en exécutant les commandes suivantes :

dnf config-manager --set-enabled powertools
dnf install gpgme-devel
pecl install gnupg
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini

Ensuite, redémarre le service PHP-FPM pour appliquer les modifications :

systemctl restart php-fpm

Installer Composer

Composer est un gestionnaire de dépendances pour PHP. Tu dois l’installer dans ton système.

Tout d’abord, télécharge le fichier d’installation de Composer avec la commande suivante :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Ensuite, installe le Composer avec la commande suivante :

php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Tu devrais obtenir le résultat suivant :

All settings correct for using Composer
Downloading...

Composer (version 2.0.11) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Ensuite, vérifie la version de Composer avec la commande suivante :

composer -V

Tu devrais obtenir le résultat suivant :

Composer version 2.0.11 2021-02-24 14:57:23

Créer une base de données

Ensuite, tu devras créer une base de données et un utilisateur pour Passbolt.

Tout d’abord, connecte-toi à MariaDB avec la commande suivante :

mysql

Une fois connecté, crée une base de données et un utilisateur avec la commande suivante :

MariaDB [(none)]> CREATE DATABASE passbolt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]> GRANT ALL ON passbolt.* TO 'passbolt'@'localhost' IDENTIFIED BY 'password';

Ensuite, supprime les privilèges et sors de MariaDB avec la commande suivante :

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Installe et configure Passbolt

Tout d’abord, change le répertoire en répertoire racine web de Nginx et télécharge la dernière version de Passbolt avec la commande suivante :

cd /var/www
git clone https://github.com/passbolt/passbolt_api.git passbolt

Une fois le téléchargement terminé, change le répertoire en passbolt et installe toutes les dépendances requises avec la commande suivante :

cd passbolt
composer install --no-dev

Ensuite, tu devras installer haveged pour générer la clé GPG. Tout d’abord, installe le service haveged avec la commande suivante :

dnf install haveged

Ensuite, démarre le service haveged avec la commande suivante :
systemctl start haveged

Ensuite, génère la clé GPG avec la commande suivante :

gpg --full-generate-key

Réponds attentivement à toutes les questions. Laisse le champ du mot de passe vide lorsqu’on te demande de définir un mot de passe :

gpg (GnuPG) 2.2.9; Copyright (C) 2018 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: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) y

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

Real name: Hitesh
Email address: [email protected]
Comment: Welcome
You selected this USER-ID:
    "Hitesh (Welcome) <[email protected]>"

Change (N)ame, (C)omment, (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: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 1A0448FECA43E1F9 marked as ultimately trusted
gpg: directory '/root/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/40733A5076D11E86EF2FE5B51A0448FECA43E1F9.rev'
public and secret key created and signed.

pub   rsa2048 2021-03-12 [SC]
      40733A5076D11E86EF2FE5B51A0448FECA43E1F9
uid                      Hitesh (Welcome) <[email protected]>
sub   rsa2048 2021-03-12 [E]

Remarque: Rappelle-toi de la clé secrète générée ci-dessus.

Ensuite, exporte la clé secrète dans les fichiers serverkey_private.asc et serverkey.asc avec la commande suivante :

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

Ensuite, définis la propriété appropriée au répertoire passbolt :

chown -R nginx:nginx /var/www/passbolt

Ensuite, initialise le trousseau de clés Nginx avec la commande suivante :

sudo su -s /bin/bash -c "gpg --list-keys" nginx

Sortie :

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

Ensuite, renomme le fichier de configuration par défaut de Passbolt :

cp config/passbolt.default.php config/passbolt.php

Ensuite, modifie le fichier passbolt.php et définis tes paramètres de base de données et ton URL de base :

nano config/passbolt.php

Change les lignes suivantes :

        'fullBaseUrl' => 'https://passbolt.linuxbuz.com',
    // Database configuration.
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'passbolt',
            'password' => 'password',
            'database' => 'passbolt',
            'serverKey' => [
                // Server private key fingerprint.
                'fingerprint' => '40733A5076D11E86EF2FE5B51A0448FECA43E1F9',
                'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
                'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',

Sauvegarde et ferme le fichier puis installe le Passbolt avec la commande suivante :

cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt install --no-admin" nginx

Tu devrais obtenir la sortie suivante :

All Done. Took 0.9595s

Import the server private key in the keyring
---------------------------------------------------------------
Importing /var/www/passbolt/config/gpg/serverkey_private.asc
Keyring init OK

Passbolt installation success! Enjoy! ?

Configurer Nginx pour Passbolt

Ensuite, tu devras créer un fichier de configuration Nginx pour Passbolt. Tu peux le créer avec la commande suivante :

nano /etc/nginx/conf.d/passbolt.conf

Ajoute les lignes suivantes :

server {
  listen 80;
  server_name passbolt.linuxbuz.com;
  root /var/www/passbolt;
  
  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;
  }
}

Enregistre et ferme le fichier puis vérifie que Nginx n’a pas d’erreur de syntaxe :

nginx -t

Sortie :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ensuite, redémarre le Nginx pour appliquer les modifications :

systemctl restart nginx

Sécurise Passbolt avec Let’s Encrypt SSL

Ensuite, tu devras installer le client Certbot pour installer le SSL Let’s Encrypt pour Passbolt. Tu peux l’installer avec la commande suivante :

dnf install letsencrypt python3-certbot-nginx

Ensuite, obtiens et installe un certificat SSL pour ton domaine lets avec la commande suivante :

certbot --nginx -d passbolt.linuxbuz.com

Il te sera demandé de fournir ton adresse e-mail et d’accepter les conditions de service :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Account registered.
Requesting a certificate for passbolt.linuxbuz.com
Performing the following challenges:
http-01 challenge for passbolt.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/passbolt.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/passbolt.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://passbolt.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email: hitje[email protected]).


IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/passbolt.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/passbolt.linuxbuz.com/privkey.pem
   Your certificate will expire on 2021-06-09. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again with the "certonly" option. To non-interactively
   renew *all* of your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Enregistre un utilisateur pour Passbolt

Ensuite, tu devras enregistrer un utilisateur pour Passbolt. Tu peux le faire avec la commande suivante :

cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt register_user -u [email protected] -f howtoforge -l Demo -r admin" nginx

Tu devrais obtenir la sortie suivante :

     ____                  __          ____  
    / __ \____  _____ ____/ /_  ____  / / /_ 
   / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/ 
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /    
 /_/    \__,_/____/____/_.___/\____/_/\__/   

 Open source password manager for teams
---------------------------------------------------------------
User saved successfully.
To start registration follow the link provided in your mailbox or here: 
https://passbolt.linuxbuz.com/setup/install/f81227bc-b0b6-44b5-99a7-6b490a4ba262/5a112de0-6ca4-4e1b-97c8-26453ef3828b

Tu peux utiliser le lien ci-dessus pour accéder au Paabolt.

Configurer le pare-feu

Ensuite, tu devras autoriser les ports 80 et 443 à travers le pare-feu. Tu peux le faire avec la commande suivante :

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

Maintenant, recharge le firewalld pour appliquer les changements :

firewall-cmd --reload

Accéder à l’interface Web de Passbolt

Maintenant, ouvre ton navigateur Web et tape l’URL https://passbolt.linuxbuz.com/setup/install/f81227bc-b0b6-44b5-99a7-6b490a4ba262/5a112de0-6ca4-4e1b-97c8-26453ef3828b. Tu seras redirigé vers la page suivante :

Passbolt

Ici, tu devras télécharger les extensions de navigateur Passbolt et rafraîchir la page une fois installée. Tu devrais voir la page suivante :

Définir le mot de passe Passbolt

Indique le mot de passe sécurisé et clique sur le bouton Suivant. Tu devrais voir la page suivante :

Choisis une couleur

Choisis une couleur, saisis un jeton de sécurité et clique sur le bouton Suivant. Tu seras redirigé vers le tableau de bord Passbolt à la page suivante :

Gestionnaire de mots de passe Passbolt

Conclusion

Félicitations ! Tu as installé avec succès le gestionnaire de mots de passe Passbolt avec Nginx et Let’s Encrypt SSL sur CentOS 8. Tu peux maintenant mettre en œuvre le Passbolt dans ton organisation et commencer à stocker et partager les identifiants de connexion entre les membres de l’équipe en toute sécurité.

Vous aimerez aussi...