使用Docker搭建自己的在线密码管理器软件-Bitwarden

前言

因为现在网络安全问题愈发严重,黑客经常通过互联网已泄露的用户和密码信息进行撞库攻击,而且很多用户在不同网站使用的是相同的帐号密码,所以为不同的网站设置不同的密码就非常重要。

但密码不同尤其是使用随机生成的密码,这个时候往往需要一个密码管理软件帮我们记住并自动填写这些密码。比如1Passwordlastpass这些在线密码管理器软件。但是今天给大家介绍的是Bitwarden

Bitwarden是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。Bitwarden提供云托管服务,并支持自行部署解决方案

推荐原因总结:

  • 开源且免费
  • 多平台,电脑、手机、浏览器插件均可使用
  • 可以搭建在自己的服务器上

一、Docker和docker-compose安装

这里不做详细介绍,可以参考我的这篇文章:Ubuntu使用Docker搭建编译环境完整教程

二、使用bitwardenrs镜像

(一)镜像选择

这里没有使用Bitwarden官方镜像,因 Bitwarden 服务器使用.Net开发,Docker 镜像体积过大,此外它使用MSSQL数据库,这个数据库对服务器性能要求比较高。

所以有人利用Rust重写了一遍,根据官方项目同步更新,这个项目的Docker镜像叫做bitwardenrs,这个镜像体积比较小,对服务器性能要求比较低,所以本次部署采用该镜像。

(二)docker-compose.yml

因为采用docker-compose安装,所以我们简单粗暴,下面是docker-compose.yml文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3'

services:
bitwarden:
image: bitwardenrs/server
container_name: bitwarden
restart: always
volumes:
- ./bw-data:/data
ports:
- 1080:80
environment:
SIGNUPS_ALLOWED: 'true'

使用docker-compose up -d即可启动容器。

三、启用HTTPS

一般来说,我们都不希望和服务器通信的密码被截获,所以墙裂建议启用https来加密我们和服务器之间的通信。

这里采用的是Nginx反向代理,具体证书申请不做详述,下面是一个Nginx配置参考。

修改点:

  • server_name301return的网址换成你的域名
  • proxy_pass换成docker搭建的Bitwarden的ip和端口
  • ssl_certificatessl_certificate_key换成你域名的证书
1
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
48
49
50
51
52
53
54
55
56
57
58
59
60
server {
listen 80;
listen [::]:80;

server_name yourdomain.com;

# redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://yourdomain.com$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

server_name yourdomain.com;

location / {
proxy_pass http://127.0.0.1:1080;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /ssl/nginx/yourdomain.com.pem;
ssl_certificate_key /ssl/nginx/yourdomain.com.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;

# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam.pem
ssl_dhparam /yasin/ssl/dhparam.pem;

# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;

# verify chain of trust of OCSP response using Root CA and Intermediate certs
# ssl_trusted_certificate /etc/ssl/ethanblog.com/chain1.pem;

# replace with the IP address of your resolver
resolver 223.5.5.5 8.8.8.8;
}

四、使用说明

(一)首次使用

一般设置好后,输入你配置的服务URL,首次访问时将语言设置为中文,然后我们会看到下面的界面:

login

然后点击注册按钮填写我们的邮箱和主密码,请务必牢记你的主密码,因为一旦遗失,你保存的密码就再也找不回来了。

register

你设置的密码信息会通过主密码进行加密,比起担心服务器数据泄露,更重要的是不能泄露主密码。

为了防止数据丢失,定期备份你的数据文件夹比如bw-data即可。

注册完毕后我们就可以在各个客户端通过配置Bitwarden的服务端URL,然后输入用户名和密码即可访问我们的密码数据。

(二)关闭注册

在我们注册好自己邮箱和密码后,如果你并不希望为其他人提供服务,请记得关闭注册功能

先使用docker-compose down停止容器,然后将docker-compose.yml文件最后的SIGNUPS_ALLOWED改为false,然后使用docker-compose up -d命令重新启动即可。

关闭注册功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3'

services:
bitwarden:
image: bitwardenrs/server
container_name: bitwarden
restart: always
volumes:
- ./bw-data:/data
ports:
- 1080:80
environment:
SIGNUPS_ALLOWED: 'false'

(三)PC软件使用

第一次使用,推荐使用PC软件,可以将我们的密码较快的设置完毕。

下载打开后,记住设置成我们自己搭建的Bitwarden服务器URL,否则默认使用官方的密码托管服务,手机软件和浏览器插件同理。

设置如下:

pc\_software

具体软件的使用这里就不详细说明了,留给大家自己去探索。

(四)浏览器插件

我们更多的使用场景应该就是网页自动填充了,所以添加一个浏览器扩展,这样匹配到你密码设置的域名网站就可以自动填充了。

这里以我用的Chrome浏览器为例,可以去应用商店中搜索Bitwarden安装即可,这个比Chrome自带的密码填充的好处是只有输入主密码才可以查看你的密码,Chrome有电脑系统用户密码就可以查看,而且索Bitwarden手机APP也可以使用。

如果有无法访问应用商店的,这里有一个1.4.3版本的离线版,Chrome离线安装扩展方法可以自行搜索。

  • 百度网盘下载地址:点我
  • 提取码:u15c

(五)手机APP

IOS和安卓都有相关软件,且免费。

安卓不能上Google Play的话,下面是2.4.2版本的百度网盘的下载地址。

  • 百度网盘下载地址:点我
  • 提取码:i9o6

IOS不太清楚,安卓的话,如果是安卓P(安卓9)以上版本,应该都可以调用自动填充框架服务,选择Bitwarden,这样APP也可以帮我们自动填写密码。

这是我的小米手机设置参考:

app

五、升级

当有新的版本可以升级时,可以使用下面的命令进行升级,否则可能无法使用APP对应的一些新功能:

1
2
3
docker-compose down
docker-compose pull
docker-compose up -d

强烈建议升级前先备份你的数据。

六、Enjoy

好了,就介绍这么多,自动填充习惯后你就会发现再也回不回去了…

Enjoy it now。


使用Docker搭建自己的在线密码管理器软件-Bitwarden
https://www.shangyexin.com/2020/06/17/docker-bitwarden/
作者
Yasin
发布于
2020年6月17日
许可协议