如何在Ubuntu 18.04服务器上安装Passbolt密码管理器

Passbolt是一个开源的自托管密码管理器,它使您可以安全地共享和存储网站的登录凭据,路由器密码,Wi-Fi密码等。本教程将向您展示如何安装Passbolt Community Edition(CE)在具有Apache或Nginx Web服务器的Ubuntu 18.04上。

密码功能

  • 免费和开源
  • 密码使用OpenPGP(一种公认的加密标准)进行加密。
  • 可用于Firefox和Google Chrome的浏览器扩展。
  • 与您的团队轻松共享登录凭据,而不会影响安全性。
  • 干净,用户友好的界面。
  • 导入和导出密码。
  • 您可以手动添加登录凭据。

您可能听说过Bitwarden等其他自托管密码管理器,但它需要安装Docker,因此它仅可在64位计算机上使用。 该Passbolt教程可在32位和64位计算机上使用。

在Ubuntu 18.04 Server上安装Passbolt的前提条件

Passbolt用PHP编写,并依赖于MySQL / MariaDB数据库服务器。 因此,您需要设置一个LAMP堆栈或LEMP堆栈。 如果您更喜欢Apache Web服务器,请设置LAMP堆栈。

  • 如何在Ubuntu 18.04 Server / Desktop上安装LAMP Stack

如果您喜欢Nginx Web服务器,则设置LEMP堆栈。

  • 如何在Ubuntu 18.04 LTS上安装LEMP Stack(Nginx,MariaDB,PHP7.2)

您还需要一个域名,这样您就可以使用Web浏览器从任何地方访问Passbolt。 我从NameCheap注册了我的域名,因为价格低廉,而且它们免费提供whois隐私保护。

步骤1:将Passbolt下载到Ubuntu 18.04服务器上

如果您去官方网站下载Passbolt,则需要输入姓名和电子邮件地址。 如果那不是您想要的,请通过在服务器上执行以下命令从Github下载最新的稳定版本。

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

文件将保存在 passbolt_api 目录。 我们将其重命名为 passbolt

sudo mv passbolt_api passbolt

然后使Web服务器用户(www-data)作为此目录的所有者。

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

更改目录。

cd /var/www/passbolt/

安装Composer – PHP依赖管理器。

sudo apt install composer

使用Composer安装依赖项。

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

如果要求您设置文件夹权限,请选择 Y

步骤2:创建MariaDB数据库和密码用户

现在,我们需要登录到MariaDB控制台并为Passbolt创建数据库和用户。 默认情况下,Ubuntu上的MaraiDB软件包使用unix_socket来验证用户登录名,这基本上意味着您可以使用操作系统的用户名和密码登录MariaDB控制台。 因此,您可以运行以下命令来登录,而无需提供MariaDB根密码。

sudo mysql -u root

接下来,使用以下命令为Passbolt创建一个新数据库。 本教程将其命名 passbolt,您可以为数据库使用任意名称。 我们还指定 utf8mb4 作为支持非拉丁字符和表情符号的字符集。

CREATE DATABASE passbolt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

以下命令将创建一个数据库用户和密码,并同时将新数据库的所有权限授予该新用户,以便以后在Passbolt上可以写入该数据库。 用您喜欢的数据库名称,用户名和密码替换红色文本。

GRANT ALL ON passbolt.* TO 'passboltuser'@'localhost' IDENTIFIED BY 'password';

刷新特权表并退出MariaDB控制台。

FLUSH PRIVILEGES;

EXIT;

步骤3:安装必需和推荐的PHP模块。

运行以下命令以安装Passbolt所需或推荐的PHP模块

sudo apt install php-imagick php-gnupg php7.2-common php7.2-mysql php7.2-fpm php7.2-ldap php7.2-gd php7.2-imap php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-gmp php7.2-xsl

然后重新启动Apache。 (如果使用Nginx,则无需重新启动Nginx。)

sudo systemctl restart apache2

第4步:生成OpenPGP密钥

如果您使用的是VPS(虚拟专用服务器),建议安装 避风港 包以生成足够的熵。

sudo apt install haveged

然后运行以下命令以生成新的密钥对。

gpg --gen-key

您将被要求输入您的姓名和电子邮件地址。 如果要求您设置密码短语,只需按Tab键并选择“确定”,因为php-gnupg模块目前不支持使用密码短语。

passbolt-pgp-key-passphrase-php-gnupg

将私钥复制到密码配置位置:

gpg --armor --export-secret-keys [email protected] | sudo tee /var/www/passbolt/config/gpg/serverkey_private.asc > /dev/null

并复制公钥。

gpg --armor --export [email protected] | sudo tee /var/www/passbolt/config/gpg/serverkey.asc > /dev/null

初始化 www-data 用户的密钥环。

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

步骤5:配置密码

确保你在 /var/www/passbolt/ 目录。

cd /var/www/passbolt/

将样本配置文件复制到生产配置文件。

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

使用命令行文本编辑器(例如Nano)编辑配置文件。

sudo nano config/passbolt.php

首先,找到以下行。

'fullBaseUrl' => 'https://www.passbolt.test',

用您自己的网址替换网址,例如 https://passbolt.yourdomain.com。 不要忘记在您的DNS记录管理器中为此子域创建DNS A记录。

在里面 database configuration 部分,输入您先前创建的数据库名称,数据库用户名和密码。

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

在里面 email configuration 部分,

  • 指定SMTP主机名,端口号,登录凭据,以便您的密码可以发送电子邮件。 通常,您需要使用端口587将电子邮件汇总到远程SMTP服务器。 确保将tls设置为true,这样SMTP事务将被加密。
  • 同时设置 From: 电子邮件地址和发件人姓名。
    // Email configuration.
    'EmailTransport' => [
        'default' => [
            'host' => 'mail.yourdomain.com',
            'port' => 587,
            'username' => '[email protected]',
            'password' => 'secret',
            // 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]_organization.com' => 'Passbolt'],
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ],
    ],

为了轻松设置您自己的电子邮件服务器,请查看以下教程。

  • 如何使用Modoboa在Ubuntu 18.04上快速设置自己的邮件服务器

注意:如果passbolt与邮件服务器安装在同一盒子上,则无需在邮件服务器中指定用户名和密码。 EmailTransport。 只需使用//注释掉这两行。 以下屏幕快照显示了此方案的示例配置。

密码发送电子邮件
在gpg部分中,输入GPG密钥指纹,如下所示。 您需要删除所有空格。

'fingerprint' => '2FC8945833C51946E937F9FED47B0811573EE67E',

您可以使用以下命令获取钥匙指纹。 更换 [email protected] 生成PGP密钥对时使用您的电子邮件地址。

sudo gpg --list-keys --fingerprint | grep -i -B 2 '[email protected]'

输入指纹后,取消注释以下两行。

'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',

保存并关闭文件。

步骤6:运行安装脚本

运行安装脚本作为 www-data 用户。

sudo su -s /bin/bash -c "./bin/cake passbolt install --force" www-data

在安装过程中,系统将要求您创建一个管理员帐户。

安装passbolt ubuntu

创建帐户后, 您将获得一个URL,以完成在Web浏览器中的安装。 在此之前,我们需要使用Apache或Nginx配置Web服务器。

步骤7:为Passbolt创建Apache虚拟主机或Nginx配置文件

阿帕奇

如果使用Apache Web服务器,请为Passbolt创建虚拟主机。

sudo nano /etc/apache2/sites-available/passbolt.conf

将以下文本放入文件中。 更换 passbolt.example.com 使用您的真实域名,不要忘记为其设置DNS A记录。 另请注意,Passbolt的网络根是 /var/www/passbolt/webroot/,不是 /var/www/passbolt/

<VirtualHost *:80>
  ServerName passbolt.exmaple.com
  DocumentRoot /var/www/passbolt/webroot/

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/passbolt/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>

保存并关闭文件。 然后通过以下方式启用此虚拟主机:

sudo a2ensite passbolt.conf

重新加载Apache以使更改生效。

sudo systemctl reload apache2

Nginx的

如果您使用Nginx Web服务器,请为Passbolt创建一个虚拟主机。

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

将以下文本放入文件中。 更换 passbolt.example.com 使用您的真实域名,不要忘记为其设置DNS A记录。 另请注意,Passbolt的网络根是 /var/www/passbolt/webroot/,不是 /var/www/passbolt/

server {
   listen 80;
   server_name passbolt.example.com;

   root /var/www/passbolt/webroot/;
   error_log /var/log/nginx/passbolt.error;
   access_log /var/log/nginx/passbolt.access;

   index index.php index.html index.htm index.nginx-debian.html;

   location / {
     try_files $uri $uri/ /index.php?$query_string;
   }

   location ~ .php$ {
     # try_files $uri =404;
     fastcgi_split_path_info ^(.+.php)(/.+)$;
     # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

     fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;

     fastcgi_buffer_size 128k;
     fastcgi_buffers 256 16k;
     fastcgi_busy_buffers_size 256k;
     fastcgi_temp_file_write_size 256k;
   }

    # Don't log favicon
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    # Don't log robots
    location = /robots.txt  {
        access_log off;
        log_not_found off;
    }

    # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc...
    location ~ /. {
        deny all;
        access_log off;
        log_not_found off;
    }

    # Deny all grunt, composer files
    location ~* (Gruntfile|package|composer).(js|json)$ {
        deny all;
        access_log off;
        log_not_found off;
    }

     # A long browser cache lifetime can speed up repeat visits to your page
  location ~* .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }
}

保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

步骤8:启用HTTPS

为了加密HTTP流量,我们可以通过安装由Let’s Encrypt发行的免费TLS证书来启用HTTPS。 运行以下命令在Ubuntu 18.04服务器上安装Let’s Encrypt客户端(certbot)。

sudo apt install certbot

如果使用Nginx,则还需要安装Certbot Nginx插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令以获取并安装TLS证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d passbolt.example.com

如果使用Apache,请安装Certbot Apache插件。

sudo apt install python3-certbot-apache

并运行此命令以获取并安装TLS证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d passbolt.example.com

哪里

  • --nginx:使用nginx插件。
  • --apache:使用Apache插件。
  • --agree-tos:同意服务条款。
  • --redirect:通过301重定向强制HTTPS。
  • --hsts:将Strict-Transport-Security标头添加到每个HTTP响应。 强制浏览器始终对域使用TLS。 防御SSL / TLS剥离。
  • --staple-ocsp:启用OCSP装订。 有效的OCSP响应被装订到服务器在TLS期间提供的证书。

现在应该获得证书并自动安装。

passbot自托管密码管理器

步骤9:在Web浏览器中完成Passbolt安装

首先,您需要在Firefox或Google Chrome浏览器上安装Passbolt扩展程序。

  • Firefox的Passbolt扩展
  • Google Chrome的Passbot扩展

现在,复制运行安装脚本后获得的URL,并将其粘贴到浏览器的地址栏中。 您将看到基于Web的设置向导。 第一步是确保您的域和服务器密钥指纹正确。

密码安装向导密码管理器

在第二步中,只需单击下一步按钮即可导入现有密钥。

密码导入私有密钥ubuntu

在第三步中,创建一个密码短语。

密码登录密码短语ubuntu

然后下载加密的密钥并将其存储在安全的地方。 只能使用您的密码来解密此密钥。

备份密码秘密密钥ubuntu

在第4步中,设置安全令牌。

密码安全令牌

最后,您可以使用密码登录。

密码-nginx-配置-加密密码

现在,您可以创建密码,从csv或kdbx文件导入密码。

密码导入密码

设置Cron作业以自动发送电子邮件

要发送系统电子邮件,请运行以下命令。

sudo -u www-data /var/www/passbolt/bin/cake EmailQueue.sender

您可以在www-data用户的Crontab文件中添加命令以自动处理电子邮件。

sudo crontab -u www-data -e

在文件中添加以下行,以便每分钟处理一次电子邮件。

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

保存并关闭文件。

故障排除

如果您尝试创建密码,但被卡在“深吸一口气,享受当下的时刻……”屏幕上,这很可能是因为Apache或Nginx配置文件中出现问题。 如果您从本文中复制Apache / Nginx配置,则在创建密码时应该没有问题。

包起来

我希望本教程可以帮助您在Ubuntu 18.04上安装Passbolt。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂

Sidebar