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

这样的解决方案相对来说还是比较粗糙。比如说有时候忘了自己设定的标题是什么,查找起来不是很方便,当设置新密码的时候,有时候也忘了及时的更新,而且我一些重要的密码很多都是一样的,因为复杂的密码有时候自己也很难输入。
最重要的是,我在safari跟chrome上的密码没有互通!
这些浏览器虽然做的还是很人性化的,会给你自动生成复杂密码,自动填充,但是查看密码却有点繁琐。我总是感觉没有安全感,比如以后换设备怎么办,有时候修改密码到底浏览器有没有记录好等等诸如此类的繁琐问题。

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

简单介绍

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

  • 全平台使用,mac、ios、安卓、win、linux等
  • 设置简单,自动生成复杂密码、自动填充、自动保存
  • 导入导出方便,可以定时导出json文件放在安全的地方做备份

浏览器管理界面
具体的功能还有很多,在下面尽量提到。

部署Bitwarden

这是张大妈上的一篇帖子,写的是非常详细,我基本上也是顺利的安装了,大家可以参考一下。

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

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

bitwardenrs/server:latest

上面张大妈的教程说是要输入Bitwarden_rs,但是我失败了,可能是有所变化?

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

  • 镜像选择我们刚才下载的镜像
  • 端口映射中前面的是容器端口,我们填写80,后面自定义服务器端口,只要不冲突就行。最后记得要点右边的加号,这样才会被添加
  • 目录映射就是把容器的目录映射到本地文件夹中,前面记得填/data,后面自定义就行

容器列表
点击提交之后,就已经部署好了,输入http://ip+端口就可以访问
但是这样的话还不够安全,会暴露服务器的ip,而且访问也不够简洁方便。
那怎样才能绑定域名呢?


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


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

大致是接下来的几个步骤

  1. 建立一个网站,做好域名解析
  2. 设定好ssl证书,开启强制访问
  3. 做好反向代理--域名指向本地的端口/也就是docker里面的Bitwarden

先添加一个站点,自定义一个二级域名,php版本选择 静态网站,其他的无需设置,直接点击提交。
添加站点
接下来去域名商那里做好二级域名的解析,指向自己的服务器
接着点击自己的网站,在有侧边栏中选择ssl添加证书
宝塔界面


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

证书申请成功
好的,我们还差最后一步添加反向代理
在左侧边栏点击反向代理,并添加一个反向代理
反向代理界面

  • 代理名称自定义
  • 目标URL中填入127.0.0.1:端口即可。其中127.0.0.1就是代表本地的意思,后面的端口就是刚才docker那设置的端口

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

开始使用

创建账号

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

这个主密码非常的重要,一旦忘记就不能恢复。
当然用上Bitwarden之后,唯一需要记忆的也就是这个密码。

添加密码项目

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

  • 最上面的登录就是字面意思,也是最常用的一个类型。还有身份卡片安全笔记可以选择。
  • 接下来就是名称,这里可以自定义,跟网站名字没有关系,适合自己方便好记就可以了。
  • 然后是右边的文件夹,我们可以把它分类到不同的文件夹。不支持同一个项目出现在多个文件夹,但是可以收藏某一个项目,让它出现在收藏夹。我想一般是常用的项目才会用得上。
  • 接下来就是用户名密码,这个就是关键了,我们就是要把登录的账号密码填写上去。其中密码右上角有一个回旋箭头,点击即可生成随机密码,生成规则在其他页面设置。箭头旁边的,点击即可查询这个密码有没有安全隐患。
  • 再往下是验证器秘钥,这个好像主要是给那些二步验证还是什么一次性密码来使用的,还没有去尝试过。
  • 接着是到了URI,这个是填写网站的链接,我们刚才是保存了哪个网站的账户密码,就填写哪个网站的链接。这个填写跟后面的匹配检测有关联,我们在下文中详细讲解。

那么到这里,我们这个密码项目就已经建立好了。使用的时候可以点击按钮快速的复制用户名或密码。
当然,这样还不是很方便,因为密码自动填充已经非常普遍了,关于怎么设置密码自动填充请看下文。

匹配检测详解

先讲一下为什么要设置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/345123.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/987https://123.baidu.com/ass/sdcsd/123都是可以顺利检测到的
但是开始于模式就会检测不到,只能检测到https://123.baidu.com/123/987https://123.baidu.com/123/987/123123/1wdvd等。

简单的来说,开始于模式下网址如果不带路径的话,跟主机模式是一样的。带了路径的话,检测会比主机模式更加精确

  • 正则表达式

这个我不会,就没有研究了

  • 精确

这个就是字面意思,跟我们填写的URL完全对的上才会有所反应。

  • 从不

这个也是字面意思,我们随便填写什么,都不会提供密码建议。


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

  • 如果是百度、QQ这种服务比较多,或是一个账户通行的网站。我们直接选择基础域(默认)模式,这样登录QQ邮箱mail.qq.com的时候也会检测到,登录QQ音乐y.qq.com的时候也能检测到。(iPhone用户在app里也能检测到)
  • 如果是不同的二级域名提供不同的服务用不同账号登录的网址,(比如a.go.com用账号A登录,b.go.com用账号B登录)那建议选择主机模式,这样不会在同一个网址上出现很多无用的选项
  • 有的网址不同的路径就会代表不同的内容,(比如go.com/zh是中国区go.com/us是美区)那这个时候我们就可以选择开始于模式,避免无用的选项
  • 精确模式很少进行选择。举个例子,当在电脑上某网站的登录网址是go.com,于是我们记录下来。但是到了手机上却是go.com/login或者是m.go.com,那么检测就会失去效果。

关于站点图标

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


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

  • Bitwarden会自动根据我们填写的URL去获取网站根目录下的favicon.png文件并生成站点图标。
  • 如果URL没有填写http、https协议头,如a.com,那么不会自动获取
  • 如果站点根目录下没有图标文件,则获取不到图标
  • 如果URL填写的是外网地址,如谷歌、推特等,则获取不到图标。但是如果我们搭建在海外服务器的话,是可以顺利获取的。(直接使用官网的服务应该也是可以获取)
  • 站点图标可以在设置里选择是否打开

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

如果你填写的是家里路由器的内网地址192.186.1.1之类的。那肯定是没有图标的,但是我们可以新增一个匹配检测从不URL放在第一行。
路由器密码项目
很显然,我的小米路由器填写的是内网地址,所以没有图标。但是我可以填写小米官网的地址,获取小米的logo。
密码项目
如下图,站点图标就会自然出现。
站点图标

关于自动填写

以上是密码项目的添加。使用的话需要自己手动复制粘贴。需要密码自动填写的话,还需要下载对应的浏览器插件或者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界面

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

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


如果没有提示的话

  • 检查自己的URL匹配检测正不正确
  • 两个框都点击试一下,有时候点击用户名没有反应,但是点击密码框就会检测到

当然我们在使用的时候不仅仅只是浏览器的时候需要密码,更多的还是app使用的时候。
qq
以上是使用QQ的app登录时的密码建议,也是同样生效的。(截图截不出来,所以拍的照片。)


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

  • 一般来说,大一点的app都是有官网的,先在网页端找到网址,然后填写即可。
  • 如果填写了仍然没有反应,不能自动填写,建议把匹配规则设置成基础域,这样范围最广。
  • 以上方法都不行的话,那就只能去Bitwarden里手动复制粘贴了

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

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

  • 快速添加密码项目

我们的流程如下

在安装好插件的电脑浏览器上,登录一个已有密码的网站。
登录后就会提示是否保存密码,我们直接点击是,现在保存
保存提示
那么到这里,密码已经添加完成了,如果是需要换成复杂密码。我们先去修改密码的界面。
密码修改
接着我们点击右上角浏览器插件,并点击箭头所指的第一个图标,接着点击右上角的编辑
浏览器插件
点击下图箭头所指的地方,即可生成新的密码
浏览器插件
提示
有这个提示也不要紧,因为软件会保留5条密码历史记录
密码生成器
调整密码生成参数,点击复制密码,再点击右上角的选择-保存,接着复制到刚才的网页重设密码的区域,最后点击确定,网页就会自动刷新。

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


如果浏览器之前有保存过密码,那我们可以直接导出来,并导入到Bitarden中。(safari不支持导出)
导入密码库
导出密码库也在上图中,会有三种格式选择,一般选择json格式。我试过导入清空再导出,也是非常的方便,不会出现奇怪的问题。

其他

  • 如果是自行托管的话,在登陆之前要在左上角的设置中填写自己的地址
    自托管环境
  • 添加密码之后,需要手动同步一下才能立马更新到其他设备上。web管理界面没有同步选项,只有其他的插件或是app上才有。
  • MAC直接去app store下载客户端,桌面版本与safari插件是一起的,而且桌面版本不支持自动填充,插件只能快捷键输入,使用体验不佳。
  • 可以防止其他人通过你的自托管地址注册用户,可以自行上网搜索一下方法。
  • 身份支付卡并未介绍,可以自行了解,也是一个自动填写表格的好功能
  • 更多问题请看官方文档,没有中文版本,可以利用浏览器的翻译功能。

最后的最后

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

最后修改:2021 年 04 月 09 日
如果觉得我的文章对你有用,请随意赞赏