# 搭建开源免费的全平台私有密码工具BitWarden
# Bitwarden是什么
Bitwarden 是一个安全且免费的跨平台密码管理器,一款开源密码管理软件,和Keepass、LastPass相似,支持全平台客户端。
开源也就给了我们更多的可定制性,既可以使用官方的服务(跳过服务端的部署环节,直接到客户端的使用),也可以使用自建的服务,本篇文章就介绍在CenOS7系统下搭建搭建私有的bitwarden_rs。
# 全平台
BitWarden 支持 Windows系统、macOS系统 和 Linux系统 和 Android,iOS 两大手机端平台,并且支持各大Chrome,Firefox,Opera,Edge的浏览器插件,用户也可直接访问网站进行登录,还有命令行管理模式,可以说是覆盖平台及其全面的软件了。
# 收费吗
所有服务器端和客户端软件都是免费的
# Bitwarden和bitwarden_rs的区别
bitwarden_rs项目延伸自Bitwarden,bitwarden_rs使用Rust实现了Bitwarden相似的功能,两者均开源。不过Bitwarden需要较多的依赖(如MSSQL),占用内存也比较大,如果是个人或家庭使用,推荐更加轻量的bitwarden_rs,并且bitwarden_rs还可以免费使用Bitwarden的一些高级功能,如附件上传、TOTP等功能。
# 前期准备
- 拥有自己的服务器(系统Linux,本次教程cenots7,已安装docker)
- 使用自己的域名(本篇文章 b.xgss.net)
- 申请免费SSL证书
# 部署服务端
# 安装docker
#安装Docker
yum -y install docker
#启动docker
systemctl start docker
#开机自启
systemctl enable docker
2
3
4
5
6
# 运行docker容器
我们只要在服务器的 docker 里部署一个 bitwarden 的容器,就可以通过 IOS、安卓、Windows、浏览器,互相同步我们的所有密码。安全吗?数据都保存在自己的服务器上。
docker run -itd \
-p 86:80 \
-p 3012:3012 \
--restart always \
--name bitwarden \
-v /data/docker/bitwarden/:/data/ \
bitwardenrs/server:latest
2
3
4
5
6
7
# 配置Nginx(ssl证书)
申请阿里云或者腾讯云免费一年SSL证书,通过acme.sh开源工具申请泛解析SSL证书:请移步 (opens new window)
域名解析到服务器
nginx的配置
server
{
listen 443 ssl http2;
server_name b.xgss.net;
access_log /data/wwwroot/log/b.xgss.net-access.log;
error_log /dev/null;
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /data/wwwroot/web/ssl/b.xgss.net.key.pem;
ssl_certificate_key /data/wwwroot/web/ssl/b.xgss.net.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
client_max_body_size 128M;
location / {
proxy_set_header Host 'b.xgss.net';
proxy_pass http://127.0.0.1:86;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /notifications/hub {
proxy_pass http://127.0.0.1:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://127.0.0.1:86;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
浏览器访问,如果显示如下页面则服务端部署成功。
# 客户端使用
# 浏览器插件使用Bitwarden
去各大浏览器应用商店搜索‘Bitwarden’安装,点击左上角的设置,添加自己的密码系统的域名
添加项目zerossl.com的账号密码信息。
在后台可以看到刚才添加的zerossl.com的账号密码信息
其他系统使用大同小异,但是移动端可能需要设置自动填充。
# IOS 端使用 bitwarden
移动端参考:@朗风晴月的文章 超好用的密码管理工具bitwarden (opens new window)
appStore 商店就可以下载,和浏览器端一样,再 bitwarden点击管理输入服务器域名,然后登录
这里注意下设置密码库超时为永不,上面的浏览器和之后的安卓 app 同理
接下是 IOS 端的自动填充设置,在设置里点击密码
自动填充密码
打开自动填充密码,并选择 bitwarden 即可
还是以手机上的张大妈 app 为例,选择账号密码登录,点一下账号框,点击小钥匙左边的账号密码即可自动填充
# 安卓端使用 bitwarden
以小米手机为例,需要去谷歌商店,或者去 gayhub 下载 bitwarden 的 app,安卓端的自动填充设置,在设置里点击更多设置
点击语言与输入法
自动填充服务
选bitwarden
这是安卓很坑的一个地方,如果不设置,有可能有时候自动填充会失灵,点击应用设置
点击应用管理
找到 bitwarden
开启自启动
同样以安卓的张大妈 app 为例,大家可以看到下图中,我其实是有多个账号的,这样也方便切换,其他 app 同理,这也是一个方便的地方
至此,本教程到此结束了