如何在 Ubuntu 14.04 服务器上使用 Nginx 服务 KeePass2 密码文件

介绍

KeePass2是一个应用程序,允许您安全,轻松地存储,管理和生成强大的密码为您的网站和应用程序。

在之前的指南中,我们讨论了 如何在远程服务器上使用 kpcli 与 KeePass 数据库文件进行交互

然后,我们将向您展示如何通过本地安装KeePass2连接和使用这个远程数据库文件,这将使您能够将密码保存在一个安全的位置,同时允许您从任何设备访问数据库。

安装 Nginx

作为本教程的先决条件,我们假定您已经完成了之前的指南,并在您的远程服务器上有KeePass2数据库文件。

现在,我们需要配置一个 Web 服务器以提供安全访问我们的文件. 我们将在本指南中使用 nginx。

通过键入安装 Web 服务器:

1sudo apt-get update
2sudo apt-get install nginx

这将下载并安装 Web 服务器。

创建SSL证书

我们将使用SSL来确保与服务器的通信,在传输过程中将我们的数据加密,以便外部人员无法读取我们的密码信息。

首先,在 nginx 配置等级下创建一个目录,可用于存储我们的 SSL 文件:

1sudo mkdir /etc/nginx/ssl

现在,我们可以通过键入生成自签名的SSL证书:

1sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

这会问你一系列关于你的网站的问题. 尽可能地回答他们. 最重要的问题是读到共同名称(例如服务器FQDN或你的名字)的问题。

当你完成时,你将有两个名为nginx.keynginx.crt的文件在你的/etc/nginx/ssl目录中。

创建一个密码文件

我们现在有SSL证书来加密我们的通信到我们的服务器。

但是,我们还需要实施一个机制来对服务器进行身份验证,我们不想让任何人访问我们的密码数据库。

最简单的方法是实际上安装一组名为apache2-utils的工具,我们可以从库中获取该包:

1sudo apt-get install apache2-utils

这将安装htpasswd工具,可用于创建安全的密码文件,我们的Web服务器可以读取和理解。

我们可以通过指定文件位置和用户帐户来生成密码文件:

sudo htpasswd -c /etc/nginx/htpasswd demo_user
New password:
Re-type new password:
Adding password for demo_user

这将创建一个名为htpasswd的文件在/etc/nginx目录中,并为用户创建一个名为demo_user的条目。

创建一个 Web 目录

我们将提供一个名为 password_database.kdbx 的文件,我们将假设该文件位于您的主目录中。

为了使我们的网页服务器能够正确访问该文件并能够阅读和写入内容,我们需要创建一个适当的网页目录来存储该文件。

1mkdir ~/secure_html

现在,将数据库文件移动到该目录:

1mv ~/password_database.kdbx ~/secure_html

现在,我们需要给 nginx 在目录所有权下运作的用户和组:

1sudo chown www-data:www-data ~/secure_html

我们还希望使在本目录下创建的所有额外的文件可供网页用户访问,我们可以通过在我们的目录中设置setgiud小节点来做到这一点:

1sudo chmod 2770 ~/secure_html

现在,我们需要将我们的系统用户添加到我们的www-data组,以便我们可以访问我们刚刚保护的目录:

sudo usermod -aG www-data demo_user

**注:此时,您应该退出并重新登录,以便系统识别您的新组成员。

我们还应该为本目录中已经存在的一切提供我们网站服务器的群组所有权:

1sudo chown :www-data ~/secure_html/*

我们的目录和文件现在应该正确配置。

  • Web 服务器是目录的用户和组所有者。
  • Web 服务器是所有文件的组所有者。
  • Web 服务器将获得目录中创建的新文件的组所有权。

我们现在可以设置我们的nginx配置来服务这个目录。

配置 Nginx 服务器块

现在,我们已经准备好创建我们的 Nginx 配置。

我们将修改默认的服务器封锁文件。在您的文本编辑器中打开它,使用根特权:

1sudo nano /etc/nginx/sites-available/default

内部,我们将创建两个服务器块,您可以删除其他内容或评论它们。

我们绝对想要求SSL进行数据传输,所以第一个块会告诉nginx将正常的HTTP流量重定向到HTTPS。

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    access_log off;
    return 302 https://$http_host$request_uri;
}

这告诉服务器,对于在端口80上接收的任何常规请求,我们希望将请求全部直接发送到端口443以将其包装到SSL中。

在此块下方,我们将指定我们的SSL流量规则,对于我们的SSL部分,我们将添加一个看起来像这样的服务器块:

server {
    listen 443;
    listen [::]:443 ipv6only=on ssl;
    server_name your_domain.com;

    access_log /var/log/nginx/access.log;
    root /home/demo_user/secure_html;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        auth_basic "Restricted";
        auth_basic_user_file "/etc/nginx/htpasswd";

        dav_methods PUT DELETE MOVE COPY;
        dav_access group:rw all:r;
    }
}

这个第一个部分将区块设置为SSL服务器,它可以设置日志位置,设置服务器名称,将文档根设置为我们创建的目录,并指定我们创建的SSL证书和密钥。

下面,一个位置块使用我们创建的密码文件来限制访问我们的目录. 最后,我们设置了一些WebDAV方法,使我们的KeePass2应用程序能够读取,修改和保存数据。

完成后,保存并关闭文件。

现在我们可以重新启动 nginx 来实现我们的新配置:

1sudo service nginx restart

我们现在已经准备好配置我们的客户端应用程序。

下载并在本地计算机上安装KeePass2

如果你还没有这样做,你需要下载并在本地计算机上安装KeePass2程序,这样你就可以与我们的远程数据库文件进行交互。

如果你在本地计算机上运行Linux,那么你的发行版的存储库中有很好的KeePass2包,例如,在Ubuntu上,你可以键入:

1sudo apt-get update
2sudo apt-get install keepass2

这将安装KeePass2应用程序在您的本地Ubuntu机器上。

如果您在本地计算机上使用 Windows 或 OS X,您可以访问 Keepass 网站以获取 KeePass2 应用程序的最新版本。

如果您在本地计算机上使用 Windows,右上角标记为专业版安装程序的下载链接就是您正在寻找的:

KeePass2 Windows download

如果您正在使用 OS X,您可以向下滚动到贡献 / 非官方 KeePass 包部分。

KeePass2 OS X download

您可能需要通过一些额外的步骤来启动和运行应用程序. 遵循操作系统的说明。

连接到您的远程密码数据库文件

现在你已经安装了KeePass2应用程序,开始应用程序。

告诉KeePass2允许自签名SSL证书

我们需要做的第一件事是告诉我们的应用程序接受无法验证的SSL证书,因为我们的SSL证书是自签名的,因此它不是由任何证书机构在我们系统的信任证书机构列表中签署的。

我们可以通过修改设置告诉KeePass我们在这方面没关系。

文件输入/输出连接设置下,检查接受无效的SSL证书(自签名、过期...)的选项:

KeePass2 accept self-signed certs

点击OK来执行您的更改。

连接到您的远程文件

现在,我们已经准备好连接到我们的文件。

从菜单中点击文件 > 打开 > 打开 URL :

KeePass2 open URL

您将收到一个对话框,要求您填写URL和身份验证信息。

KeePass2 authentication

请以以下格式填写URL:

https://your_domain.com/password_database.kdbx

如果您命名您的数据库文件不同,则根据需要调整。对于用户名和密码,请输入您为htpasswd命令选择的帐户详细信息,以确保 nginx 目录的位置。

当您连接时,您将被要求为您的数据库文件提供主密码,这是您为保护数据库文件选择的密码。

KeePass2 master password

完成后,您的密码数据库应该在您的 KeePass2 实例中打开:

KeePass2 database opened

您现在可以在本地计算机上修改并使用数据库中的密码和凭证,您可以将更改写回文件中,并将存储在您的远程服务器上。

结论

使用远程数据库文件将有助于您在设备上保持密码数据库同步。

绝对是必不可少的,你将你的文件备份到几个安全的位置,以避免在服务器问题或文件损坏的情况下丢失你的登录凭证。

您还应该考虑实施一个单独的备份机制,以存储文件的以前版本,如果您的数据库文件被破坏,并将更改同步到您的其他位置。

By Justin Ellingwood
Published At
Categories with 技术
comments powered by Disqus