介绍
KeePass2是一个应用程序,允许您存储,管理和生成强大的密码为您的网站和应用程序,安全和容易。
在先前的指南中,我们讨论了如何使用kpcli远程服务器上与KeePass的数据库文件进行交互 。 在本指南中,我们将设置服务器以使用nginx提供对我们的数据库文件的安全访问。
然后,我们将向您介绍如何使用本地安装的KeePass2连接和使用此远程数据库文件。 这将允许您将密码保存在安全的位置,同时仍允许您从任何设备访问数据库。
安装Nginx
作为本教程的先决条件,我们假设您已完成上一个指南,并在远程服务器上有一个KeePass2数据库文件。
现在,我们需要配置一个Web服务器来提供对我们文件的安全访问。 我们将在本指南中使用nginx。
键入以下内容安装Web服务器:
sudo apt-get update
sudo apt-get install nginx
这将下载并安装Web服务器。
创建SSL证书
我们将通过使用SSL确保与服务器的通信安全。 这将在传输期间加密我们的数据,以便外部各方无法读取我们的密码信息。
首先,在nginx配置层次下创建一个目录,用于存储我们的SSL文件:
sudo mkdir /etc/nginx/ssl
现在,我们可以通过键入以下内容生成自签名SSL证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
这将询问您一系列关于您的网站的问题。 尽可能回答他们。 最重要的问题是一个读取Common Name (eg server FQDN or YOUR name)
。 这是要求您的服务器的域名或IP地址。
当你完成,你将有两个文件名为nginx.key
和nginx.crt
在你/etc/nginx/ssl
目录。
创建密码文件
我们现在有SSL证书来加密我们与我们的服务器的通信。
然而,我们还需要实现一种用于向服务器认证自己的机制。 我们不希望只允许任何人访问我们的密码数据库。
要做到这一点最简单的方法其实就是安装一套名为工具apache2-utils
。 我们可以从存储库获取包:
sudo apt-get install apache2-utils
这将安装htpasswd
工具,它可以用于创建我们的网络服务器可以阅读和理解安全密码文件。
我们可以通过指定要创建的文件位置和用户帐户来生成密码文件:
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
。 我们将假设此文件在您的主目录中。
为了使我们的Web服务器能够正确访问该文件并能够读取和写入内容,我们需要创建一个正确的Web目录来存储文件。 在我们的主目录(作为常规用户)中,为密码数据库创建一个新目录:
mkdir ~/secure_html
现在,将数据库文件移动到该目录:
mv ~/password_database.kdbx ~/secure_html
现在,我们需要给该用户和组nginx在目录的所有权下运行:
sudo chown www-data:www-data ~/secure_html
我们还希望使将在此目录下创建的所有其他文件可供Web用户访问。 我们可以通过设置做到这一点setgiud
我们的目录位:
sudo chmod 2770 ~/secure_html
现在,我们需要将我们的系统用户加入到我们的www-data
组,以便我们可以访问我们只是担保的目录:
sudo usermod -aG www-data demo_user
注意 :此时,你应该注销并重新登录,这样系统会识别新的组成员身份。
我们还应该为我们的网络服务器的群组所有权已经在这个目录:
sudo chown :www-data ~/secure_html/*
我们的目录和文件现在应该正确配置。
- Web服务器是目录的用户和组所有者。
- Web服务器是所有文件的组所有者。
- Web服务器将被授予在目录中创建的新文件的组所有权。
我们现在可以设置我们的nginx配置来服务这个目录。
配置Nginx服务器模块
现在,我们准备创建我们的Nginx配置。
我们将修改默认服务器块文件。 在您的文本编辑器中使用root权限打开它:
sudo 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来实现我们的新配置:
sudo service nginx restart
我们现在可以配置我们的客户端应用程序。
在本地计算机上下载并安装KeePass2
如果您还没有这样做,您需要下载并安装KeePass2程序到本地计算机。 这将允许您与我们的远程数据库文件交互。
如果您在本地计算机上运行Linux,则很可能在您的分发包的存储库中有一个KeePass2包。 例如,在Ubuntu上,您可以键入:
sudo apt-get update
sudo apt-get install keepass2
这将在您的本地Ubuntu计算机上安装KeePass2应用程序。
如果您在您的本地计算机上使用Windows或OS X,您可以通过访问获得KeePass2应用程序的最新版本KeePass的网站 。 点击左侧导航栏中的“下载”链接。
如果您在本地计算机上使用Windows,则右上角标有“专业版”和“安装程序”的下载链接是您要查找的内容:
如果您使用的是OS X,您可以向下滚动到“贡献/非官方KeePass包”部分。 有一个OS X包,你可以抓住:
您可能需要通过一些额外的步骤才能使应用程序运行。 按照操作系统的说明进行操作。
连接到远程密码数据库文件
现在您已安装KeePass2应用程序,启动应用程序。
告诉KeePass2允许自签名的SSL证书
我们需要做的第一件事是告诉我们的应用程序接受无法验证的SSL证书。 由于我们的SSL证书是自签名的,因此它不会由我们系统的受信任证书颁发机构列表中的任何证书颁发机构签名。
我们可以告诉KeePass我们可以通过修改一个设置。
点击Tools
,然后选择Options
。 单击高级选项卡。 在“文件输入/输出连接”设置下,选中“接受无效的SSL证书(自签名,过期,...)”选项:
单击“确定”以实现您的更改。
连接到远程文件
现在,我们准备连接到我们的文件。
点击File > Open > Open URL
从菜单:
将会出现一个对话框,要求您填写URL和身份验证信息。
使用以下格式填写网址:
https://your_domain.com/password_database.kdbx
如果您为数据库文件命名不同,请根据需要进行调整。 对于用户名和密码,请输入您选择的帐户详细信息htpasswd
命令,以确保Nginx的目录位置。
连接时,将要求您输入数据库文件的主密码。 这是您选择用于保护数据库文件的密码。
完成后,您的密码数据库应在您的KeePass2实例中打开:
您现在可以修改和使用本地计算机上的数据库中的密码和凭据。 您可以将更改写入文件,它们将存储在远程服务器上。
结论
您现在应该有一个相当好的方法来访问您的数据库文件。 使用远程数据库文件将帮助您保持密码数据库在设备间同步。
绝对必要将您的文件备份到几个安全位置,以避免在服务器问题或文件损坏的情况下丢失您的登录凭据。 我建议你实现一个自动同步系统,例如LSYNC或BitTorrent的同步处理自动镜像。
您还应该考虑实现一个单独的备份机制,用于存储文件的先前版本,以防数据库文件损坏并且更改同步到其他位置。