Contents
前言
关于密码管理,我相信对绝大部份人来说都是个头痛的问题,包括我之前。。一直以来,我都使用的2套密码管理系统:一套是chrome自带的google提供的密码管理,这个是针对网站的;一套是mac系统自带的,针对系统本身以及安装的APP。其实吧,这样也能用用,只要能无视chrome经常提示的密码已泄露问题~~。关于密码泄露,我已经麻木了,随便泄露,但是让我这么懒的人去改那么多网站的密码我是打死不干的,最多开始对重要网站使用2次认证,而因为有了2次认证,所以密码反而设置得简单了,方便记忆就行,安全靠2次认证。。。而至于APP的密码,设置的时候就只能用自己习惯的那几个密码了。其实这也是无奈之举,那么多app,那么多网站,都要设置复杂的密码难度是较大的,chrome还可以自行生成复杂密码,但是mac系统自带的密码管理工具可没这个功能。。而chrome自带的密码管理工具有时候也不靠谱,有些网站的登录界面不会自动填充密码,搞得我还要自己去浏览器选项里面自己查。
思来想去,想想干脆还是自己搞一套密码管理系统算了,能够用一种方案统一解决网站和系统APP的密码管理问题,并能自动生成复杂密码,同时减少我的管理成本,毕竟我年纪大了,记忆力也是大不如年轻人了。。考察了Lastpass、KeePass、bitwarden,最后选择了开源自建的bitwarden,毕竟致力于打造家庭数据中心的我,能自建的绝对亲力亲为,并且bitwarden也支持密码自动生成,以及导入导出等功能,足够一般人使用了,同时也通过app支持多种系统平台的部署:
这些也完全满足了我所有的需求,就它了!
部署
创建宿主机上需要映射到bitwarden容器内的文件夹
惯例先创建-v参数挂载需要的文件夹:
mkdir -p /docker/bitwarden/data
部署bitwarden(Vaultwarden)
注:hub.docker上bitwarden的官方镜像已经2年多没更新了,现在都是使用Vaultwarden版本,有100M+的下载:
安全性应该可以放心。
docker run格式的命令如下:
docker run --name vaultwarden -d --restart=always \
-v /docker/bitwarden/data:/data/ \
-p 9500:80 \
vaultwarden/server:latest
用可用的域名进行发布
因为这套密码管理系统我需要在多个设备上进行使用(iphone、ipad、win、mac),通常这类自建又跨平台的应用,都需要对外提供一个合法可用的链接(不需要80或者443端口)用来让所有使用这个应用的设备在各种可联网的环境下来进行连接(例如nextcloud),而bitwarden也一样,所以需要对外进行发布。
大家需要根据实际环境和自己使用的反向代理选择最适合自己的发布方式,可以参考我以前的几篇文章:
1、docker系列 使用docker基于NPM搭建自己的反向代理
2、linux面板系列 配置反向代理并使用非443端口进行发布
3、家庭数据中心系列 通过国内备案云主机白嫖cloudflare实现国外快速访问国内站点
4、家庭数据中心系列 通过无公网IP的家庭宽带白嫖cloudflare实现快速建站(通用)
其中第1,2种方式适合有公网ip却没有合法443端口的环境(家庭宽带、未备案的云主机),需要在url后面加非标端口(如果使用cloudflare建站的不需要加端口,但是需要自定义源站端口,这个可以参考:家庭数据中心系列 通过cloudflare的Origin Rules解决建站有公网IP却没有合法的80、443端口的问题)。第3种方式适合有备案的云主机,第4种方式适合所有环境(包括没有公网IP的环境),也是我建议的方式(不管你的环境有没有公网IP,因为这种方式不需要直接在公网上跑https流量)。
我以后会用一篇文章来总结归纳所有的发布方式并链接到每种方式具体的部署文章上,不过需要先等我把相关的前置文章都写完才行~,毕竟涉及到的知识点实在是太多了,我不可能在一篇文章里全讲完。
假设最终域名为pwd.example.com,这个后面要用到。
初始化bitwarden
创建账号及密码
假设已经根据上一章完成了bitwarden的域名发布,并且域名和端口为bitwarden.example.com:55555,使用http(s)://bitwarden.example.com:55555/admin进行登录:
因为首次登录没有账号,点击最下方红框中的"Create account"创建一个账号:
上图红框中的是必填项,其中的"Email address"必填,是登录账号,"Master password"是主密码,也是你唯一需要记住的密码,这个密码非常重要,请确保其足够复杂且你能正确记忆(当然也可以设置简单容易记的主密码并在"账户设置"-"安全"里设置二次验证来保证安全性)最后点击下方的"Create account"创建账号,创建后返回初始登录页面,使用刚刚创建的邮箱进行登录:
成功登录:
设置语言
直接点击页面右上方红框中的"Account settings":
选中红框中的"Preferences"(偏好设置),在"Language"中选择红框中的"zh-CN",然后"Save":
这时候会锁定并要求你输入主密码进行解锁:
解锁后页面既变为中文界面了。
导入密码
由"账户设置"-"工具"-"导入数据"界面,可以导入其他应用导出的密码文本,红框中的"文本格式"可以选择导入文本的格式:
以导入chrome导出的csv文本为例,在"文本格式里"选择红框中的Chrome(csv)选项:
然后在红框处选择chrome导出的密码文件,然后点击下方红框中的"导入数据"即可:
同理可导入macos导出的密码文件:
每种应用导出密码的方式不同,这里没法一一列举,就以chrome及macos导出密码为例演示一下。
chrome是在"设置"里的google密码管理工具的"设置"里,如下图红框所示:
而macos是在"系统设置"-"密码"里:
其他类似应用都是可导出密码的地方,大家需要自行研究下。
最后导入了chrome和macos的密码库,我平时常用的密码库就都导入进来了:
安装客户端
chrome浏览器插件
安装插件
在chrome应用商店搜索"bitwarden"并进行安装:
在浏览器扩展程序栏点击刚才安装的插件,并选择界面中"登录到"右边红框中的下拉菜单按钮的"自托管":
在下图页面的"服务器URL"填写前面设置的域名,如果是未备案域名就直接在后面用:port的方式添加,然后点右上角红框中的保存:
输入前面注册账号时填的电子邮件地址,然后点击红框中的继续:
输入前面设置的主密码以后点击红框中的"使用主密码登录":
这时候可以看到,插件已经链接到了自建的服务器上:
设置chrome插件
插件默认值不好使,需要进行优化。
自动填充:
默认自动填充基本不可用,需要进行设置,点击右下角最右边红框中的"设置",然后选上方红框的"自动填充":
下图中2个红框是需要更改的设置:
如下图所示,我将自动填充快捷键设置成了command+Q:
默认URI匹配检测默认的"主域"在遇到同一个二级域名下有多个主机名的时候,或者同一个二级域名有多个不同端口的时候都不能正确检测,所以我改为了"主机"。
安全:
这里确定多久你需要输入主密码解锁一次,默认1小时,我觉得个人电脑就设置为从不了,不折腾。
一些小技巧
插件图标右下方的数字指该标签页打开的网站有一个匹配到的数据:
自带的阅后即焚send,可以传送文本和文件,可以设置过期时间,阅读次数,密码等信息:
密码生成器,可以指定密码的复杂度:
send和生成器也可以在网页版进行使用。
ios和ipados的客户端
ios和ipados的安装都是直接从app store里安装即可,设置的界面和步骤也是和chrome插件的一模一样,这些就不提了,关键点在于替换系统级默认的icloud密码验证:
ios和ipados的设置路径都是在:"设置"-"密码"-"密码选项":
如果有二次验证的程序也在这里选择,比如我的Authy,设置完成以后bitwarden就可以完全接管默认的"iCloud密码于钥匙串"了。
macos 客户端
这个我不推荐,因为和ios和ipados不同,即便在macos里安装了bitwarden,在密码选项里也没有办法选择,个人估计是macos的权限限制,只是这样一来安装macos的客户端用处就不大了。所以建议mac和win都直接用chrome的插件即可。
后话
一旦所有的密码管理都交给bitwarden以后,bitwarden应用的稳定性就放到了第一位,可以考虑在本地不同的docker环境里运行2个bitwarden的应用,然后在本地做热备(通过本地的负载均衡),或者利用CDN提供的热备源站功能,将家庭数据中心里的bitwarden和云主机上的bitwarden作为主要源以及热备源,通过这种方式来保证bitwarden的永远在线(目前我采用的方式),只是这种方式需要考虑到定期同步密码库的问题。
以腾讯云为例,设置界面如下: