基于Docker搭建bitwarden密码管理服务器
0 什么是密码管理
在这个数字化、信息化的时代,我们的日常生活中充斥着大量的账户信息,有银行的账户密码、手机卡的服务密码、各种社交软件的登录密码。各种密码如果设置成不一样的我们很难记住,而设置为一样的则很不安全。虽然各种服务商都在尽可能地方便用户登录,比如设置扫码登录、手机验证码登录,但这些登陆方式都无法彻底取代密码。这个时候就需要我们通过一些手段辅助我们管理密码。
其实密码管理这个服务我们日常生活中已经是经常用到了。比如苹果家的钥匙串服务可以保存我们日常生活中的密码,又比如各种浏览器的记住密码功能。在我们需要登陆的时候可以自动的为我们填充密码。但是这些密码管理器也有一些问题,这些问题不是技术上的,而是商业上的。比如苹果的钥匙串无法在Windows平台使用。尤其是某些行业还是无法脱离Windows平台。这个时候一些跨平台的密码管理服务就可以很好的弥补这个问题。
1 搭建密码管理服务器
1.1 自己搭建密码服务器的优点
自行搭建密码管理服务器自然是有一些优点的。
① 数据存储在自有服务器中。
② 无使用费用(服务器费用除外)。
③ 完全免费,没有密码条目数量的限制。
④ 项目开源。
1.2 Bitwarden_rs
Bitwarden是一款开源密码管理软件,和Keepass、LastPass相似,支持全平台客户端,支持自建服务。
bitwarden_rs 是一个用于本地搭建 Bitwarden 服务器的第三方 Docker 项目。
bitwarden_rs 用 Rust 编写,与官方 Bitwarden 客户端兼容,并改用 SQLite 数据库,相对于官方版使用 MSSQL 数据库要求至少 2GB 内存,可以说 bitwarden_rs 对硬件基本没有要求。
bitwarden_rs 除不支持官方企业版的部分功能(如群组控制、日志审核、目录同步、以及基于企业组织层面的 DUO Security 两步登录)外,其他所有功能均免费支持。并跟随官方版本保持及时更新。
1.3 通过docker安装Bitwarden_rs
在上一篇中,我在NUC5PPYH中安装宝塔面板进行基本的管理。在宝塔面板中有docker管理器,我们可以比较方便的使用它管理Docker。但是需要注意的是该管理器启动的docker无法自动重启。我们需要通过命令行来修改。
接下来我们一步步的安装。
① 点击【镜像管理】进入该页面。
② 点击【获取镜像】按钮,并在框中输入【bitwarden_rs】,而后点击【获取镜像】按钮。
获取镜像完毕后,管理器的列表中会出现镜像。
③ 进入【容器列表】页面
④ 点击【创建容器】,选择镜像【bitwardenrs_server:latest】;端口映射第一个是容器端口,填写为80,第二个是映射到主机上的端口,可以随便写一个可用的端口; 【目录映射】则是让容器把数据存到一个指定的目录。设置完这两个之后一定要点击蓝色框中的加号才能有效。
⑤ 点击【提交】,完成容器创建。创建完成之后容器会自动运行。此时需要在宝塔面板的安全界面,放行我们刚刚映射的主机端口。
完成之后就可以访问http://主机IP:映射端口进入登录界面。
然而,此时我们会发现无法登录,甚至无法注册。这是因为bitwarden_rs强制要求开启https。
接下来我们通过nginx设置反向代理,为bitwarden_rs开启https。
1.3 Nginx反代理
bitwarden_rs docker可以通过添加环境变量配置SSL证书。但是官方不推荐通过该方法开启SSL。因此我们通过Nginx反代理完成。Nginx反代理可以非常方便的实现域名绑定。
① 点击宝塔面板的【网站】选项(已提前安装好LNMP环境);点击【添加站点】。
② 在域名框中输入你想绑定的域名。例如bitwarden.docker.com。由于我们这个站点只用于反代理,因此【PHP版本】可以选择【纯静态】。
③ 点击【提交】按钮,完成站点创建。
④ 选择【SLL】,配置证书。由于我使用的是阿里云的域名。阿里云可以很方便的为二级域名申请单个的CA证书。因此选择【其他证书】,而后将对应的私钥和公钥通过记事本打开,把内容复制到两个输入框中,点击【保存】开启SSL。
⑤ 打开强制HTTPS,不允许HTTP访问。
⑥ 点击【反向代理】,添加反向代理。代理名称自拟;目标URL填写为127.0.0.1(本机):映射端口。其他默认即可。点击【提交】完成创建。
至此即完成了SSL反向代理设置。此时用户可以通过https://ip:443 访问bitwarden_rs。(绑定了域名请使用https://域名访问。)
通过添加多个站点,绑定不同的二级域名,可以实现访问不同的端口服务。
2 使用bitwarden
2.1 使用两步验证提高安全性
在注册好初始账户之后,即可登录。在这个时候只需要【账户】和【密码】就可以登录系统了。然而这还是不安全,因为如果我们的主密码泄漏之后,其他人就可以登录,我们系统中所存储的个人密码就会泄漏出去。那有没有什么方法可以进一步提高安全性呢?答案是开启【两步登录】。
大家都知道国内很多网络服务 (如淘宝、银行),除了正确的帐号密码之外,常常还需要额外给你发一条手机短信验证码,以此进一步确认你是帐号的真正主人。
这其实就是「两步验证」或者叫做「双因素验证」的一种实现方式,它这里第二步验证是靠手机短信来发送验证码的。
还有一种两步登录就如同我们经常使用的QQ一样,通过诸如【QQ安全中心】中的动态验证码来确认身份。
在bitwarden中我们同样可以实现类似的功能。
① 在设置页面中,选择【两步登录】选项。
② 我们使用第一种程序【验证器应用】,手机端下载【Authy】应用。
③ 点击【管理】后,输入【主密码】继续设置。
④ 手机端扫码添加。添加完成后,网页端会要求输入手机上是数字以确认添加。
完成添加后,我们再登录系统时就需要输入手机上的验证码了。这个验证码是根据时间与密钥变化的,因此只要手机的时间准确,不联网也可以生成验证码。
建议在另外一个设备上登录authy账号,避免日常使用的设备丢失后无法进入系统。
2.2 使用其他客户端
bitwarden支持windows客户端、Microsoft edge插件、Google chrome插件、iOS客户端、安卓客户端。在这里以Windows客户端为例进行说明。其他客户端操作类似。
bitwarden Windows客户端可以在Microsoft应用商店中下载。
也可以从官网下载。
安装完成之后打开客户端。
① 点击左上角的齿轮按钮,设置服务器地址
② 输入服务器URL。
③ 输入【账号】和【主密码】。
④ 点击【登录】,此时会提示输入【身份验证器应用】中的6位数验证码。打开手机上的【authy】应用,输入验证码。
⑤ 登录完毕后即可看到密码列表。
2.3 设置docker自动重启容器
前面讲到宝塔的docker管理器无法实现自动重启容器。因此如果服务器意外关机之后就需要我们手动启动容器,这很不方便。因此我们需要设置其自动重启。
① 通过putty连接服务器。
② 查看dockers容器列表。记录下容器ID
docker ps
③ 通过指令更新容器,使其具备–restart=always
docker update --restart=always 容器ID(或者容器名)
以上,完毕。

塞北的雪
校验提示文案
让钱包再次鼓起来
校验提示文案
willhunting
随后一鼓作气,Mac-Chrome,iPhone,iPad上全部替换lastpass,使用下来,丝般顺滑
校验提示文案
怂系青年
校验提示文案
路人子墨
校验提示文案
利物浦是英超冠军
校验提示文案
三米哥
校验提示文案
逍遥自在_舒意人生
校验提示文案
独猎鹏
浏览器插件还行,但要右键自动填充,不能想浏览器保保存的那种自动化傻瓜操作。
手机app更***,APP密码有的能检测到,有的不行,手机浏览器直接报废,找不到插件而且app也不能关联,全靠多任务切换和复制粘贴
这玩意用的最多就是自动生成密码去注册各类小网站,并保存
校验提示文案
[已注销]
校验提示文案
KingTam
校验提示文案
ai兜
校验提示文案
Askr
校验提示文案
笛清箫和
校验提示文案
迷情飞刀
校验提示文案
没事找事啊
校验提示文案
gottenall
校验提示文案
居橘先生
校验提示文案
ilray
校验提示文案
rui3bo2
校验提示文案
三米哥
校验提示文案
灵KOYB
校验提示文案
[已注销]
校验提示文案
利物浦是英超冠军
校验提示文案
willhunting
随后一鼓作气,Mac-Chrome,iPhone,iPad上全部替换lastpass,使用下来,丝般顺滑
校验提示文案
rui3bo2
校验提示文案
独猎鹏
浏览器插件还行,但要右键自动填充,不能想浏览器保保存的那种自动化傻瓜操作。
手机app更***,APP密码有的能检测到,有的不行,手机浏览器直接报废,找不到插件而且app也不能关联,全靠多任务切换和复制粘贴
这玩意用的最多就是自动生成密码去注册各类小网站,并保存
校验提示文案
让钱包再次鼓起来
校验提示文案
ilray
校验提示文案
居橘先生
校验提示文案
gottenall
校验提示文案
没事找事啊
校验提示文案
迷情飞刀
校验提示文案
笛清箫和
校验提示文案
Askr
校验提示文案
ai兜
校验提示文案
KingTam
校验提示文案
路人子墨
校验提示文案
塞北的雪
校验提示文案
逍遥自在_舒意人生
校验提示文案