使⽤Docker搭建⾃⼰的在线密码管理器软件-Bitwarden
前⾔
因为现在⽹络安全问题愈发严重,⿊客经常通过互联⽹已泄露的⽤户和密码信息进⾏撞库攻击,⽽且很多⽤户在不同⽹站使⽤的是相同的帐号密码,所以为不同的⽹站设置不同的密码就⾮常重要。
但密码不同尤其是使⽤随机⽣成的密码,这个时候往往需要⼀个密码管理软件帮我们记住并⾃动填写这些密码。⽐
如1Password,lastpass这些在线密码管理器软件。但是今天给⼤家介绍的是Bitwarden。
Bitwarden是⼀款⾃由且开源的密码管理服务,⽤户可在加密的保管库中存储敏感信息。Bitwarden平台提供有多种客户端应⽤程序,包括⽹页⽤户界⾯、桌⾯应⽤,浏览器扩展、移动应⽤以及命令⾏界⾯。Bitwarden提供云托管服务,并⽀持⾃⾏部署解决⽅案。
推荐原因总结:
开源且免费
多平台,电脑、⼿机、浏览器插件均可使⽤
可以搭建在⾃⼰的服务器上
⼀、Docker和docker-compose安装
这⾥不做详细介绍,可以参考我的这篇⽂章:
⼆、使⽤bitwardenrs镜像
(⼀)镜像选择
这⾥没有使⽤Bitwarden官⽅镜像,因 Bitwarden 服务器使⽤.Net开发,Docker 镜像体积过⼤,此外它使⽤MSSQL数据库,这个数据库对服务器性能要求⽐较⾼。
所以有⼈利⽤Rust重写了⼀遍,根据官⽅项⽬同步更新,这个项⽬的Docker镜像叫做bitwardenrs,这个镜像体积⽐较⼩,对服务器性能要求⽐较低,所以本次部署采⽤该镜像。
(⼆)l
因为采⽤docker-compose安装,所以我们简单粗暴,下⾯是l⽂件:
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_name和301return的⽹址换成你的域名proxy_pass换成docker搭建的Bitwarden的ip和端⼝ssl_certificate和ssl_certificate_key换成你域名的证书
server {
listen 80;
listen [::]:80;
server_name yourdomain;
# redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 yourdomain$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name yourdomain;
location / {
proxy_pass 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.pem;
ssl_certificate_key /ssl/nginx/yourdomain.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
ssl_session_tickets off;
# curl / > /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-S HA384;
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/chain1.pem;
# replace with the IP address of your resolver
resolver 223.5.5.5 8.8.8.8;
}
四、使⽤说明
(⼀)⾸次使⽤
⼀般设置好后,输⼊你配置的服务URL,⾸次访问时将语⾔设置为中⽂,然后我们会看到下⾯的界⾯:
然后点击注册按钮填写我们的邮箱和主密码,请务必牢记你的主密码,因为⼀旦遗失,你保存的密码就再也不回来了。
你设置的密码信息会通过主密码进⾏加密,⽐起担⼼服务器数据泄露,更重要的是不能泄露主密码。
为了防⽌数据丢失,定期备份你的数据⽂件夹⽐如bw-data即可。
注册完毕后我们就可以在各个客户端通过配置Bitwarden的服务端URL,然后输⼊⽤户名和密码即可访问我们的密码数据。
(⼆)关闭注册
在我们注册好⾃⼰邮箱和密码后,如果你并不希望为其他⼈提供服务,请记得关闭注册功能。
先使⽤docker-compose down停⽌容器,然后将l⽂件最后的SIGNUPS_ALLOWED改为false,然后使⽤docker-compose up -d命令重新启动即可。
关闭注册功能:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。