在Debian 10上安装Passbolt Password Manager

在本教程中,您将学习如何在Debian 10上安装Passbolt密码管理器。 密码 是一个免费的,开源的,自托管的,可扩展的,基于OpenPGP的密码管理器,使团队能够安全地存储其个人信息并共享其通用凭据。它提供了基于订阅的版本和社区版本。本教程重点介绍社区版的设置。

在撰写本文时,尚无用于在Debian 10上设置Passbolt的官方指南发行版。因此,我们将从源代码安装Passbolt。

在Debian 10上安装Passbolt Password Manager

先决条件

  • 安装新的Vanilla Debian 10服务器。
  • 分配服务器至少2 GB RAM和2个vCPU
  • 服务器的可解析主机名或IP地址。
  • 在Debian 10上安装LEMP / LAMP堆栈

在Debian 10上安装LAMP / LEMP Stack

假设已满足上述前三个前提条件,请继续在Debian 10服务器上安装LEMP / LAMP堆栈。请注意,Passbolt是用PHP编写的,因此它需要运行LEMP或LAMP堆栈。

在Debian 10上安装PHP 7.3

注意: 默认情况下,Debian 10在其默认主存储库中随附了PHP 7.4。

apt-cache policy php
php:
  Installed: (none)
  Candidate: 2:7.4+79+0~20201210.30+debian10~1.gbpedaf15
  Version table:
     2:7.4+79+0~20201210.30+debian10~1.gbpedaf15 500
        500 https://packages.sury.org/php buster/main amd64 Packages
     2:7.3+69 500
        500 http://deb.debian.org/debian buster/main amd64 Packages

Passbolt尚不完全支持PHP 7.4。因此,请确保您安装了PHP 7.3。下面的LAMP / LEMP指南使用PHP 7.4。确保安装PHP 7.3及其模块。

安装PHP 7.3;

apt install php7.3 php7.3-mysql

请通过以下任一链接在Debian 10上设置LAMP或LEMP堆栈。

在Debian上安装LAMP Stack

在Debian 10上安装LEMP Stack

在本教程中,我们使用LAMP堆栈运行Passbolt。

创建密码数据库和数据库用户

登录到MariaDB / MySQL数据库服务器;

mysql

上面的命令假定您的MySQL / MariaDB数据库正在使用 unix_socket 进行身份验证,并且您以root用户身份执行命令。如果您不是root用户并且具有sudo权限,则只需使用; sudo mysql -u root。否则,您可以使用 mysql -u root -p 命令。

替换数据库名称,您认为合适的数据库用户名和密码。

创建支持非拉丁字符和表情符号的Passbolt数据库。

CREATE DATABASE passbolt CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建一个Passbolt数据库用户并授予该Passbolt数据库的所有特权。

grant all on passbolt.* to [email protected] identified by '[email protected]';

重新加载特权表并退出数据库;

flush privileges;
quit

将Passbolt Github存储库克隆到Apache Web根目录

由于我们将从源代码安装Passbolt,因此您需要将其Gtihub存储库克隆到您的Web根目录。

在本教程中,我们正在使用 /var/www/passbolt 作为Web根目录。

mkdir /var/www/passbolt
apt install git
git clone https://github.com/passbolt/passbolt_api.git /var/www/passbolt

由于我们将Apache用作Web服务器,因此需要将Passbolt Web根目录的所有权(用户和组)设置为Apache用户和组。

chown -R www-data: /var/www/

安装其他必需的依赖项和PHP模块/扩展

要成功安装和运行Passbolt,还需要其他工具和PHP扩展。运行以下命令以安装它们。

apt install composer gnupg2 git php7.3-{gnupg,intl,mbstring,gd,imagick,xml,common,curl,json,ldap} zlib1g

接下来,导航到Passbolt Web根目录,并使用以下命令安装其他必需的依赖项 composer

cd /var/www/passbolt

以非特权用户身份运行composer。在这种情况下,我们使用Passbolt目录的所有者(Apache Web用户,www-data)。

sudo -u www-data composer install --no-dev

在安装过程中,系统会提示您是否调整目录权限。接受并继续。

> AppConsoleInstaller::postInstall
Created `config/app.php` file
Created `/var/www/passbolt/logs` directory
Created `/var/www/passbolt/tmp/cache/models` directory
Created `/var/www/passbolt/tmp/cache/persistent` directory
Created `/var/www/passbolt/tmp/cache/views` directory
Created `/var/www/passbolt/tmp/sessions` directory
Created `/var/www/passbolt/tmp/tests` directory
Set Folder Permissions ? (Default to Y) [Y,n]? y

生成用于验证JSON请求的OpenPGP密钥

为了验证和签名传出的JSON请求,Passbolt API使用PGP密钥。因此,请运行以下命令来生成密钥。

gpg --full-generate-key

当提示您输入密码时, 不要 设置它。只需按ENTER并确认您不想设置它。也, 不要设置到期日期。

更换 你的名字YOUR_EMAIL_ID 加上您的姓名和电子邮件ID。

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)
  (14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 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: YOUR_NAME
Email address: ENTER_YOUR_EMAIL_ID
Comment: 
You selected this USER-ID:
    "YOUR_NAME <YOUR_EMAIL_ID>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
...
gpg: key 85EB40BA1D5DE890 marked as ultimately trusted
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/C503E615618B34331BA1D26D85EB40BA1D5DE890.rev'
public and secret key created and signed.

pub   rsa4096 2020-07-15 [SC]
      C503E615618B34331BA1D26D85EB40BA1D5DE890
uid                      YOUR_NAME <YOUR_EMAIL_ID>
sub   rsa4096 2020-07-15 [E]

记下密钥指纹并将其保存在某个地方,因为稍后在设置中将需要使用它。

将公共密钥和私有密钥导出并存储在Passbolt配置目录中。

gpg --armor --export-secret-keys YOUR_EMAIL_ID > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export YOUR_EMAIL_ID > /var/www/passbolt/config/gpg/serverkey.asc

接下来,为Apache Web服务器用户初始化gpg密钥环,以便Passbolt身份验证可以工作。

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

在Debian 10上配置Passbolt

复制样本Passbolt配置文件,将其重命名,如下所示;

cp /var/www/passbolt/config/passbolt{.default,}.php

接下来,打开配置文件进行修改;

vim /var/www/passbolt/config/passbolt.php

设置应用程序URL

通过替换以下网址的值,将应用程序网址设置为您的Passbolt应用程序的网址 fullBaseUrl 参数适当。

        // 'fullBaseUrl' => 'https://www.passbolt.test',
        'fullBaseUrl' => 'https://passbolt.kifarunix-demo.com',

定义数据库连接设置

配置Passbolt数据库连接设置;

    // Database configuration.
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'passman',
            'password' => '[email protected]',
            'database' => 'passbolt',
        ],
    ],

配置密码电子邮件设置

配置Passbolt电子邮件服务器设置。我们正在使用Gmail SMTP作为中继服务器。

    // Email configuration.
    'EmailTransport' => [
        'default' => [
            'host' => 'smtp.gmail.com',
            'port' => 587,
            'username' => '[email protected]',
            'password' => 'secretpassword',
            // Is this a secure connection? true if yes, null if no.
            'tls' => true,
            //'timeout' => 30,
            //'client' => null,
            //'url' => null,
        ],
    ],
    'Email' => [
        'default' => [
            // Defines the default name and email of the sender of the emails.
            'from' => ['[email protected]' => 'Kifarunix-demo Passbolt'],
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ],
    ],

指定GPG密钥指纹

提取GPG密钥指纹并将其设置为 fingerprint 参数。

gpg --list-keys --fingerprint | grep -i -B 2 YOUR_EMAIL_ID 
pub   rsa4096 2020-07-15 [SC]
      C503 E615 618B 3433 1BA1  D26D 85EB 40BA 1D5D E890
uid           [ultimate] <YOUR_NAME> <YOUR_EMAIL_ID>
sub   rsa4096 2020-07-15 [E]

复制突出显示的字符串并删除空格并将其粘贴为 fingerprint 参数。另外,通过删除行和行下方的两个正斜杠来取消注释下面的公用和专用行。

...
            'serverKey' => [
                // Server private key fingerprint.
                'fingerprint' => 'C503E615618B34331BA1D26D85EB40BA1D5DE890',
                'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
                'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
            ],

保存并退出配置文件。

创建用于Passbolt的Apache VirtualHost配置并启用HTTPS

接下来,为Passbolt创建专用的Apache虚拟主机配置文件。

vim /etc/apache2/sites-available/passbolt.conf 
<VirtualHost *:80>

        ServerAdmin passbolt.kifarunix-demo.com
        DocumentRoot /var/www/passbolt

	Redirect / https://passbolt.kifarunix-demo.com
</VirtualHost>
#SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
ServerSignature Off
ServerTokens Prod
<VirtualHost _default_:443>
        ServerAdmin passbolt.kifarunix-demo.com
        DocumentRoot /var/www/passbolt


        ErrorLog ${APACHE_LOG_DIR}/passbolt_error.log
        CustomLog ${APACHE_LOG_DIR}/passbolt_access.log combined


        SSLEngine on
        SSLCertificateFile      /etc/ssl/certs/ssl-cert-passbolt.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-passbolt.key
        SSLCACertificateFile /etc/ssl/private/ssl-cacert-passbolt.pem

        SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
        SSLProtocol -all +TLSv1.3 +TLSv1.2
        SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
        SSLHonorCipherOrder On
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff
        SSLCompression off
        #SSLUseStapling on
        SSLSessionTickets Off

	<Directory /var/www/passbolt/>
  		Options FollowSymLinks MultiViews
  		AllowOverride All
		Require all granted
	</Directory>


        <FilesMatch ".(cgi|shtml|phtml|php)$">
                        SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                        SSLOptions +StdEnvVars
        </Directory>

</VirtualHost>

保存并退出配置文件。

生成TLS证书

如果您注意到,我们在配置中启用了HTTP> HTTPS重定向。

获取您的商业信任的CA证书,并将它们安装在Apache配置中指定的目录上。

禁用Apache默认站点;

a2dissite 000-default.conf

启用密码站点;

a2ensite passbolt.conf

启用Apache rewritesslheaders 模块

a2enmod rewrite ssl headers

运行Apache配置语法检查。

apachectl -t
Syntax OK

如果没有问题,请重新启动Apache;否则,请重新启动。

systemctl restart apache2

运行Passbolt安装脚本

接下来,执行Passbolt安装脚本。

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

默认情况下,运行脚本时,它会提示您创建一个管理用户。我们通过添加 --no-admin 选项。稍后我们将创建管理员帐户。


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

 Open source password manager for teams
---------------------------------------------------------------

Running baseline checks, please wait...
Critical healthchecks are OK

Cleaning up existing tables if any.
---------------------------------------------------------------
0 tables dropped

Install the schema and default data.
---------------------------------------------------------------
using migration paths 
 - /var/www/passbolt/config/Migrations
using seed paths 
 - /var/www/passbolt/config/Seeds
using environment default
using adapter mysql
using database passbolt
ordering by creation time
...
All Done. Took 111.3186s

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

Passbolt installation success! Enjoy! ☮

运行运行状况检查,以确保一切正常。

cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt healthcheck" www-data
...
 Application configuration

 [PASS] Using latest passbolt version (2.13.1).
 [PASS] Passbolt is configured to force SSL use.
 [PASS] App.fullBaseUrl is set to HTTPS.
 [PASS] Selenium API endpoints are disabled.
 [PASS] Search engine robots are told not to index content.
 [PASS] Registration is closed, only administrators can add users.
 [PASS] Serving the compiled version of the javascript app
 [PASS] All email notifications will be sent.

 No error found. Nice one sparky!

从浏览器完成密码设置

现在,您可以按照以下地址从浏览器完成Passbolt设置: https://<passbolt-server-hostname>

下载并安装适用于您特定浏览器的插件,在本演示中,我们使用Chrome。因此,请点击 下载插件 下载以安装Passbolt Chrome附加扩展程序。


创建密码管理用户

您现在可以使用来创建Passbolt管理员用户 ./bin/cake passbolt register_user 命令。以下是此命令的命令行选项;

cd /var/www/passbolt
./bin/cake passbolt register_user --help
     ____                  __          ____  
    / __ ____  _____ ____/ /_  ____  / / /_ 
   / /_/ / __ `/ ___/ ___/ __ / __ / / __/ 
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /    
 /_/    __,_/____/____/_.___/____/_/__/   

 Open source password manager for teams
---------------------------------------------------------------
Register a new user.

Usage:
cake passbolt register_user [options]

Options:

--first-name, -f        The user first name
--help, -h              Display this help.
--interactive, -i       Enable interactive mode
--interactive-loop      Enable interactive mode (default:
                        3)
--last-name, -l         The user last name
--quiet, -q             Enable quiet output.
--role, -r              The User role, such as "admin" or "user"
--username, -u          The user email aka username
--verbose, -v           Enable verbose output.

因此,让我们创建一个管理员用户;

cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt register_user -u [email protected] -f Kifarunix -l Demo -r admin" www-data
     ____                  __          ____  
    / __ ____  _____ ____/ /_  ____  / / /_ 
   / /_/ / __ `/ ___/ ___/ __ / __ / / __/ 
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /    
 /_/    __,_/____/____/_.___/____/_/__/   

 Open source password manager for teams
---------------------------------------------------------------
User saved successfully.
To start registration follow the link provided in your mailbox or here: 
https://passbolt.kifarunix-demo.com/setup/install/4dbe1c54-79bc-48b5-9ab3-705afd5af097/e34ea69b-0954-401b-8232-946ce721eda9

复制用户注册时提供的链接,并将其粘贴到浏览器地址栏上,以便您可以使用它来完成Passbolt的设置。

该链接将您带到“欢迎”页面以完成Passbolt设置。 如果加载Passbolt URL后出现空白页,则表明您尚未安装Passbolt浏览器扩展

在Debian URL检查上安装Passbolt密码管理器

确认URL和GPG密钥指纹正确,然后单击 下一个 进行设置。

在下一步中,您需要生成密钥。但是,您只需单击 进口 导入现有密钥。

导入生成密码键

设置一个复杂的密码,您可以轻松记住该密码来保护您的秘密密钥。

在Debian 10上安装Passbolt Password Manager

现在,您的密钥已使用密码生成并加密,并存储在Passbolt附件中。通过下载并将其存储在其他位置,确保复制该密钥。

在Debian 10上安装Passbolt Password Manager

单击下一步生成您的安全令牌。

在Debian 10上安装Passbolt Password Manager

您现在已经成功设置了密码。

单击“下一步”进入“登录”页面。

在Debian 10上安装Passbolt Password Manager

然后你去。

在Debian 10上安装Passbolt Password Manager

您现在可以开始使用Passbolt来存储密码/根据需要共享密码。

配置密码发送电子邮件

最后但并非最不重要的一点是,您现在可以将Passbolt配置为能够在创建,共享,修改新密码时发送电子邮件通知。

在此之前,请确保已配置Passbolt电子邮件设置。

cd /var/www/passbolt
./bin/cake EmailQueue.sender

执行上述操作时,您应该能够收到有关激活帐户以及欢迎您使用Passbolt的电子邮件。

创建一个cron作业以执行此脚本,以自动发送电子邮件。

以Apache Web服务器用户身份安装cron作业, www-data

crontab -u www-data -e

创建一个始终运行的cron作业。

* * * * * /var/www/passbolt/bin/cake EmailQueue.sender >> /var/log/passbolt-mails.log

保存并退出cron作业文件。

您可以列出已安装的cronjobs。

crontab -u www-data -l

您的Passbolt密码管理器现已准备就绪。这标志着我们关于如何在Debian 10上安装Passbolt Password Manager的指南的结尾。

参考

从源代码安装Passbolt

Sidebar