从小学拥有第一个qq号开始,记密码就成为了生活中一件重要的小事。到了中学,网购开始盛行,各种软件、网站的账号也越来越多,我只好在本子上记录下来。其中还包括朋友的生日,一些关键的信息等等。直到大学,才想起直接放到电脑上,新建一个文档,方便自己复制粘贴。
这样的解决方案相对来说还是比较粗糙。比如说有时候忘了自己设定的标题是什么,查找起来不是很方便,当设置新密码的时候,有时候也忘了及时的更新,而且我一些重要的密码很多都是一样的,因为复杂的密码有时候自己也很难输入。
最重要的是,我在safari跟chrome上的密码没有互通!
这些浏览器虽然做的还是很人性化的,会给你自动生成复杂密码,自动填充,但是查看密码却有点繁琐。我总是感觉没有安全感,比如以后换设备怎么办,有时候修改密码到底浏览器有没有记录好等等诸如此类的繁琐问题。
于是我找到了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访问
大致是接下来的几个步骤
- 建立一个网站,做好域名解析
- 设定好ssl证书,开启强制访问
- 做好反向代理--
域名
指向本地的端口/也就是docker里面的Bitwarden
先添加一个站点,自定义一个二级域名
,php版本选择 静态网站
,其他的无需设置,直接点击提交。
接下来去域名商那里做好二级域名的解析,指向自己的服务器
接着点击自己的网站,在有侧边栏中选择ssl
添加证书
我选择的是
Let's Encrypt
的免费证书,按照操作一步一步来即可。最后记得打开右上角的
强制HTTPS
好的,我们还差最后一步添加反向代理
在左侧边栏点击
反向代理
,并添加一个反向代理- 代理名称自定义
- 目标URL中填入
127.0.0.1:端口
即可。其中127.0.0.1
就是代表本地的意思,后面的端口就是刚才docker那设置的端口
到此为止,我们就可以通过https://域名
直接访问Bitwarden
开始使用
创建账号
我们先点击界面右下角的创建账号
这个主密码非常的重要,一旦忘记就不能恢复。
当然用上Bitwarden之后,唯一需要记忆的也就是这个密码。
添加密码项目
进入管理界面之后,我们能看到左上角有三个导航栏,最常用的也就是我的密码库
,我们可以立即点击右上角的添加项目
来进行密码的填写。
在软件里一个项目
就可以理解为一个网站的密码保存。
- 最上面的
登录
就是字面意思,也是最常用的一个类型。还有身份
、卡片
、安全笔记
可以选择。 - 接下来就是
名称
,这里可以自定义,跟网站名字没有关系,适合自己方便好记就可以了。 - 然后是右边的
文件夹
,我们可以把它分类到不同的文件夹。不支持同一个项目出现在多个文件夹,但是可以收藏某一个项目,让它出现在收藏夹
。我想一般是常用的项目才会用得上。 - 接下来就是
用户名
和密码
,这个就是关键了,我们就是要把登录的账号密码填写上去。其中密码
右上角有一个回旋箭头
,点击即可生成随机密码,生成规则在其他页面设置。箭头旁边的勾
,点击即可查询这个密码有没有安全隐患。 - 再往下是
验证器秘钥
,这个好像主要是给那些二步验证还是什么一次性密码来使用的,还没有去尝试过。 - 接着是到了
URI
,这个是填写网站的链接,我们刚才是保存了哪个网站的账户密码,就填写哪个网站的链接。这个填写跟后面的匹配检测
有关联,我们在下文中详细讲解。
那么到这里,我们这个密码项目就已经建立好了。使用的时候可以点击按钮
快速的复制用户名或密码。
当然,这样还不是很方便,因为密码自动填充已经非常普遍了,关于怎么设置密码自动填充请看下文。
匹配检测详解
先讲一下为什么要设置URL
与匹配规则
当我们设定好密码A
的URL是a.com
时,那么Bitwarden就会识别到,并且给出填写建议。
- 如浏览器插件的效果
- 亦或是手机浏览器的效果
以上,都是因为填写了URL
所以自动给出填写建议的情况
那么为什么要设置匹配检测
呢?
简单的来说,通过设定它,会使得填写建议更加的智能。
- 比如说我添加了一个百度网盘的密码项目,
URL=https://pan.baidu.com/
在登录百度网盘的时候会自动建议或填写密码。但是我在登陆百度云或者是百度贴吧的时候也是同样的百度账号呀!但是网址肯定不是是刚才的https://pan.baidu.com/
。但是通过匹配检测
设定一级域名是baidu.com
的话,都是填写百度账号。这样的话我就只需要一个密码项目就足够了,不需要手动把所有的URL都填写一遍。 - 再比如说有些网站PC端的登录地址是
a.com
,但是手机登录端的是a.com/login
,我们也可以通过匹配检测
自动识别,不需要再重复添加密码项目。 - 我用自己的二级域名绑定了好几个自建服务跟网站,如果不设置好
匹配检测
的话,那么会多出很多不合时宜的密码填写建议。
接下来看看匹配检测
的详细分析
我们看上图可以发现,这个检测方法总共有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完全对的上才会有所反应。
- 从不
这个也是字面意思,我们随便填写什么,都不会提供密码建议。
我们最后理清一下思路。基础域是最大的范围,只要主域名对上了,都会检测到。主机模式下会对
二级域名
、端口
敏感,但是对网址路径不敏感。开始于模式下则更加严格,除了主机名等,还会对网址路径敏感。最严格的就是精确模式,一定要完全一样才能检测到。所以给大家提供一下几点建议
- 如果是百度、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。
如下图,站点图标就会自然出现。
海外网站我还没有想到方法去解决,我之前本来想着手动获取一下网站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。
关于开启自动填写非常简单,软件全程是有提示来告诉大家怎么操作。
我们在浏览器进行密码填充的时候,点击输入框,底部自动会有一个提示。
如果没有提示的话
- 检查自己的
URL
、匹配检测
正不正确 - 两个框都点击试一下,有时候点击
用户名
没有反应,但是点击密码框
就会检测到
当然我们在使用的时候不仅仅只是浏览器的时候需要密码,更多的还是app使用的时候。
以上是使用QQ的app登录时的密码建议,也是同样生效的。(截图截不出来,所以拍的照片。)
有的朋友可能会说,有些密码我只在app上使用,那密码项目怎么建立呢?我又不知道URL。
- 一般来说,大一点的app都是有官网的,先在网页端找到网址,然后填写即可。
- 如果填写了仍然没有反应,不能自动填写,建议把
匹配规则
设置成基础域
,这样范围最广。 - 以上方法都不行的话,那就只能去Bitwarden里手动复制粘贴了
快速添加密码项目与密码管理
我们上文中手动输入用户名
、密码
、URL
来添加密码项目。接下来演示一种实际情况下密码项目的快速添加与复杂密码的替换。
- 快速添加密码项目
我们的流程如下
在安装好插件的电脑浏览器上,登录一个已有密码的网站。
登录后就会提示是否保存密码,我们直接点击是,现在保存
。
那么到这里,密码已经添加完成了,如果是需要换成复杂密码。我们先去修改密码的界面。
接着我们点击右上角浏览器插件,并点击箭头所指的第一个图标
,接着点击右上角的编辑
。
点击下图箭头所指的地方,即可生成新的密码
有这个提示也不要紧,因为软件会保留5条密码历史记录
调整密码生成参数,点击复制密码
,再点击右上角的选择
-保存
,接着复制到刚才的网页重设密码
的区域,最后点击确定,网页就会自动刷新。
以上,密码就已经添加
完成,并且已经置换成复杂密码
。
如果浏览器之前有保存过密码,那我们可以直接导出来,并导入到Bitarden中。(safari不支持导出)
导出密码库也在上图中,会有三种格式选择,一般选择json
格式。我试过导入清空再导出,也是非常的方便,不会出现奇怪的问题。
其他
- 如果是自行托管的话,在登陆之前要在左上角的设置中填写自己的地址
- 添加密码之后,需要手动同步一下才能立马更新到其他设备上。web管理界面没有同步选项,只有其他的插件或是app上才有。
- MAC直接去app store下载客户端,桌面版本与safari插件是一起的,而且桌面版本不支持自动填充,插件只能快捷键输入,使用体验不佳。
- 可以防止其他人通过你的自托管地址注册用户,可以自行上网搜索一下方法。
身份
与支付卡
并未介绍,可以自行了解,也是一个自动填写表格的好功能- 更多问题请看官方文档,没有中文版本,可以利用浏览器的翻译功能。
最后的最后
部署安装其实非常的快,但是把sarari、chrome、以及本地保存的密码全都统一到软件上,确实花了不少时间。不过我自己觉得很值,不用分散管理,密码的安全性也提高了很多。算是一劳永逸吧~
12 条评论
可以说是最详细的教程了,三克油|´・ω・)ノ
url匹配那部分怎么搞呢大佬。之前钉钉的url是ddurl.to,现在不行了,dingtalk之类的全加上也匹配不到,怎么搞到他需要匹配哪个url
这个我就不是很懂了
要不试试抓包?看看是什么网址
这个我就不是很懂了
要不试试抓包?看看是什么网址
抓了,就是dingtalk.com但是就是匹配不上,不知道哪儿出问题了,谢谢大佬回复
是手机自动填充的时候没有反应对吧
对,基本上和钉钉有关的url都加上了 也不行,不知道咋回事,前两天还可以的
对,基本上和钉钉有关的url都加上了 也不行,不知道咋回事,前两天还可以的
其实用Docker命令行相去掉宝塔更好一些,证书也提前申请bit环境变量可以识别
我也折腾这个试试。•ᴗ•
冲冲冲
写得好好哟,我要给你生猴子! 写得好好哟,我要给你生猴子! |´・ω・)ノ滴!学生卡!打卡时间:上午9:50:20,请上车的乘客系好安全带~