Bitwarden--彻底更新我的密码管理系统
Aurality
2022年04月20日 13:55

从小学拥有第一个qq号开始,记密码就成为了生活中一件重要的小事。到了中学,网购开始盛行,各种软件、网站的账号也越来越多,我只好在本子上记录下来。其中还包括朋友的生日,一些关键的信息等等。直到大学,才想起直接放到电脑上,新建一个文档,方便自己复制粘贴。

这样的解决方案相对来说还是比较粗糙。比如说有时候忘了自己设定的标题是什么,查找起来不是很方便,当设置新密码的时候,有时候也忘了及时的更新,而且我一些重要的密码很多都是一样的,因为复杂的密码有时候自己也很难输入。

最重要的是,我在safari跟chrome上的密码没有互通!

这些浏览器虽然做的还是很人性化的,会给你自动生成复杂密码,自动填充,但是查看密码却有点繁琐。我总是感觉没有安全感,比如以后换设备怎么办,有时候修改密码到底浏览器有没有记录好等等诸如此类的繁琐问题。

于是我找到了Bitwarden,终于从密码管理这件事情上解脱了出来。

Bitwarden

简单介绍

Bitwarden是一个开源的密码管理项目,他们官网提供的服务可以直接使用,也可以自己部署到vps、电脑上、docker等各个地方。

  • 全平台使用,mac、ios、安卓、win、linux等

  • 设置简单,自动生成复杂密码、自动填充、自动保存

  • 导入导出方便,可以定时导出json文件放在安全的地方做备份

浏览器管理界面

具体的功能还有很多,在下面尽量提到。

部署Bitwarden

我选择在docker下安装Bitwarden_rs,这是一个第三方的docker项目,相对来说就是比较简洁,没有太多硬件上的要求,但是功能又比较全面。

首先登录小白必备的宝塔面板,安装docker管理器,接着点击右侧边栏的镜像管理

镜像管理

接着我们输入

代码块
JavaScript
自动换行
复制代码
bitwardenrs/server:latest
复制成功

接着点击右侧栏的容器列表,并点击创建容器

容器创建页面

容器列表

点击提交之后,就已经部署好了,输入http://ip+端口就可以访问

但是这样的话还不够安全,会暴露服务器的ip,而且访问也不够简洁方便。

那怎样才能绑定域名呢?

这个时候应该是不能够访问,因为会强制通过https访问,我们需要添加ssl证书。我们下文利用方向代理来同时解决这两个问题。 反向代理在本小白来看,有点像域名跳转。 也就是说我看上去是访问域名,但是实际上我访问的是docker里面的Bitwaden。

cut-off

利用Nginx反向代理绑定域名+开启https访问

大致是接下来的几个步骤

  1.  建立一个网站,做好域名解析

  2. 设定好ssl证书,开启强制访问

  3. 做好反向代理--`域名`指向`本地的端口/也就是docker里面的Bitwarden`

先添加一个站点,自定义一个二级域名,php版本选择 静态网站,其他的无需设置,直接点击提交。

添加站点

接下来去域名商那里做好二级域名的解析,指向自己的服务器

接着点击自己的网站,在有侧边栏中选择`ssl`添加证书

宝塔界面

我选择的是`Let's Encrypt`的免费证书,按照操作一步一步来即可。 最后记得打开右上角的`强制HTTPS`

证书申请成功

好的,我们还差最后一步添加反向代理

在左侧边栏点击`反向代理`,并添加一个反向代理

反向代理界面

到此为止,我们就可以通过https://域名直接访问Bitwarden

登录界面

开始使用

创建账号

我们先点击界面右下角的创建账号

创建面板

这个主密码非常的重要,一旦忘记就不能恢复。

当然用上Bitwarden之后,唯一需要记忆的也就是这个密码。

添加密码项目

进入web管理界面

进入管理界面之后,我们能看到左上角有三个导航栏,最常用的也就是我的密码库,我们可以立即点击右上角的添加项目来进行密码的填写。

在软件里一个项目就可以理解为一个网站的密码保存。

添加项目

那么到这里,我们这个密码项目就已经建立好了。使用的时候可以点击`按钮`快速的复制用户名或密码。

当然,这样还不是很方便,因为密码自动填充已经非常普遍了,关于怎么设置密码自动填充请看下文。

匹配检测详解

先讲一下为什么要设置URL匹配规则

当我们设定好密码A的URL是a.com时,那么Bitwarden就会识别到,并且给出填写建议。

  • 如浏览器插件的效果

浏览器插件

浏览器插件

  • 亦或是手机浏览器的效果

以上,都是因为填写了URL所以自动给出填写建议的情况

那么为什么要设置匹配检测呢?

简单的来说,通过设定它,会使得填写建议更加的智能。

1. 比如说我添加了一个百度网盘的密码项目,`URL=https://pan.baidu.com/`在登录百度网盘的时候会自动建议或填写密码。但是我在登陆百度云或者是百度贴吧的时候也是同样的百度账号呀!但是网址肯定不是是刚才的`https://pan.baidu.com/`。但是通过`匹配检测`设定一级域名是`baidu.com`的话,都是填写百度账号。这样的话我就只需要一个密码项目就足够了,不需要手动把所有的URL都填写一遍。 2. 再比如说有些网站PC端的登录地址是`a.com`,但是手机登录端的是`a.com/login`,我们也可以通过`匹配检测`自动识别,不需要再重复添加密码项目。 3. 我用自己的二级域名绑定了好几个自建服务跟网站,如果不设置好`匹配检测`的话,那么会多出很多不合时宜的密码填写建议。

接下来看看匹配检测的详细分析

匹配检测

我们看上图可以发现,这个检测方法总共有7种,我们一种一种来看。

默认匹配检测其实不是一个具体的选项,我们可以指定下面6种检测方法作为这个默认值,具体在设置里面进行设定,没有设定的话就是利用`基础域`来进行检测。 基础域是什么意思呢?其实就是一级域名的意思。 比如说我填写的链接是`https://123.baidu.com`,那么只要是一级域名是`baidu.com`的网站,Bitwarden都会自动监测到,并给出密码填写建议。所以二级域名的网址`cn.baidu.com`、带端口的网址`baidu.com:5000`、带了路径的网址`baidu.com:5000/ch/asd/123`都可以检测到。 主机名可以简单理解为路径前面的信息。比如说`https://123.baidu.com/123/345`中`123.baidu.com`就是主机名,如果带了端口号的话,还要算上端口号。 **所以`主机`模式比`基础域`模式要更加精确一点。** 当我的URI是`https://123.baidu.com`时,`其他的`二级域名的网址`cn.baidu.com`、带端口的网址`123.baidu.com:5000`都是不能够检测到的。 当我的URI是`https://123.baidu.com:5000`时,其他的二级域名(即使带了同样的端口)的网址`cn.baidu.com:5000`、带`不同端口`的网址`123.baidu.com:6000`也都是不能够检测到的。 简单的来说,就是路径前的信息要一样(如果有路径的话) **这个模式比上面的主机模式还要更加精确,范围更加小。** `开始于`也是字面意思,就是从你填的网址开始,后面接什么内容都可以。比如说还是填写`https://123.baidu.com`时,那么`https://123.baidu.com/123/345`是会检测到的,`其他的`二级域名的网址`cn.baidu.com`、带端口的网址`123.baidu.com:5000`都是不能够检测到的。 **那么问题来了,这两种模式好像没有什么差别?** 差别在于,我们填写`https://123.baidu.com/123`时 如果是`主机`模式,那么`https://123.baidu.com/987`、`https://123.baidu.com/ass/sdcsd/123`都是可以顺利检测到的 但是`开始于`模式就会检测不到,只能检测到`https://123.baidu.com/123/987`、`https://123.baidu.com/123/987/123123/1wdvd`等。 **简单的来说,`开始于`模式下网址如果不带路径的话,跟`主机`模式是一样的。带了路径的话,检测会比`主机`模式更加精确** 这个我不会,就没有研究了 这个就是字面意思,跟我们填写的URL完全对的上才会有所反应。 这个也是字面意思,我们随便填写什么,都不会提供密码建议。

我们最后理清一下思路。基础域是最大的范围,只要主域名对上了,都会检测到。主机模式下会对`二级域名`、`端口`敏感,但是对网址路径不敏感。开始于模式下则更加严格,除了主机名等,还会对网址路径敏感。最严格的就是精确模式,一定要完全一样才能检测到。

所以给大家提供一下几点建议

关于站点图标

好了,那么通过以上的设定,我们就添加好了密码项目。

密码项目

但是我们发现一个现象,有的网站是没有站点图标的,有的是有站点图标的。(如图) 那具体是什么原因呢?怎样才会出现站点图标呢?

  • -Bitwarden会自动根据我们填写的`URL`去获取网站根目录下的`favicon.png`文件并生成站点图标。

  • 如果`URL`没有填写http、https协议头,如`a.com`,那么不会自动获取

  • 如果站点根目录下没有图标文件,则获取不到图标

  • 如果`URL`填写的是外网地址,如谷歌、推特等,则获取不到图标。但是如果我们搭建在海外服务器的话,是可以顺利获取的。(直接使用官网的服务应该也是可以获取)

  • 站点图标可以在设置里选择是否打开

内网地址/强迫症患者的解决办法

如果你填写的是家里路由器的内网地址`192.186.1.1`之类的。那肯定是没有图标的,但是我们可以新增一个`匹配检测`为`从不`的`URL`放在第一行。

路由器密码项目

很显然,我的小米路由器填写的是内网地址,所以没有图标。但是我可以填写小米官网的地址,获取小米的logo。

密码项目

如下图,站点图标就会自然出现。

站点图标

海外网站我还没有想到方法去解决,我之前本来想着手动获取一下网站logo,直接放到软件的目录里。可是我也找不到放在那里。 还想过自建一个什么CDN源,但是我又不会。 要是知道的大佬可以下方留言指导一下哈!

关于自动填写

以上是密码项目的添加。使用的话需要自己手动复制粘贴。需要密码自动填写的话,还需要下载对应的浏览器插件或者app。

  • Chrome浏览器插件

插件的安装我就不再累述,如果网络条件不允许的话,可以去网上找一下crx文件离线安装。(本来想直接分享一下的...我发现我不会)

右上角是浏览器插件

上图中,右上角插件已经检测到了`1个密码建议`,但是它没有自动的填写到密码框中。

我们这个时候有两种方法

方法一:使用快捷键自动填充

在Windows上: Ctrl + Shift + L 在macOS上: Cmd + Shift + L 在Linux上: Ctrl + Shift + L Safari浏览器:Cmd + \或Cmd + 8或Cmd + Shift + P

方法二:在插件中进行设置

设置-选项-启用页面加载时的自动填充

设置界面

启用

  • ios上的app

正好手里没有安卓设备,只能说一下ios上的app。

手机app界面

关于开启自动填写非常简单,软件全程是有提示来告诉大家怎么操作。

我们在浏览器进行密码填充的时候,点击输入框,底部自动会有一个提示。

手机浏览器效果

如果没有提示的话

当然我们在使用的时候不仅仅只是浏览器的时候需要密码,更多的还是app使用的时候。

以上是使用QQ的app登录时的密码建议,也是同样生效的。(截图截不出来,所以拍的照片。)

有的朋友可能会说,有些密码我只在app上使用,那密码项目怎么建立呢?我又不知道URL。

快速添加密码项目与密码管理

我们上文中手动输入`用户名`、`密码`、`URL`来添加密码项目。接下来演示一种实际情况下密码项目的快速添加与复杂密码的替换。

  • 快速添加密码项目

我们的流程如下

在安装好插件的电脑浏览器上,登录一个已有密码的网站。

登录后就会提示是否保存密码,我们直接点击`是,现在保存`。

那么到这里,密码已经添加完成了,如果是需要换成复杂密码。我们先去修改密码的界面。

接着我们点击右上角浏览器插件,并点击箭头所指的`第一个图标`,接着点击右上角的`编辑`。

点击下图箭头所指的地方,即可生成新的密码

有这个提示也不要紧,因为软件会保留5条密码历史记录

调整密码生成参数,点击`复制密码`,再点击右上角的`选择`-`保存`,接着复制到刚才的网页`重设密码`的区域,最后点击确定,网页就会自动刷新。

以上,密码就已经`添加`完成,并且已经`置换成复杂密码`。

cut-off

如果浏览器之前有保存过密码,那我们可以直接导出来,并导入到Bitarden中。(safari不支持导出)

导出密码库也在上图中,会有三种格式选择,一般选择`json`格式。我试过导入清空再导出,也是非常的方便,不会出现奇怪的问题。

其他

  • 如果是自行托管的话,在登陆之前要在左上角的设置中填写自己的地址

  • 添加密码之后,需要手动同步一下才能立马更新到其他设备上。web管理界面没有同步选项,只有其他的插件或是app上才有。

  • 可以防止其他人通过你的自托管地址注册用户,可以自行上网搜索一下方法。

  • `身份`与`支付卡`并未介绍,可以自行了解,也是一个自动填写表格的好功能

最后的最后

部署安装其实非常的快,但是把sarari、chrome、以及本地保存的密码全都统一到软件上,确实花了不少时间。不过我自己觉得很值,不用分散管理,密码的安全性也提高了很多。算是一劳永逸吧~