Bitwarden是一款开源密码管理软件,和Keepass、LastPass相似,支持全平台客户端,支持自建服务,这篇文章要分享的是CenOS 7搭建bitwarden_rs,而不是Bitwarden,关于两者区别,后面会提到。推荐有一定Linux基础的用户继续往下阅读。
前言
早就听闻Bitwarden这款开源密码管理软件,网上口碑也不错,不过一直没有尝试。最近LastPass经常连不上服务器,极其不稳定,而且取消了中文版支持,终于下定决心自建Bitwarden
Bitwarden和bitwarden_rs
bitwarden_rs项目延伸自Bitwarden,bitwarden_rs使用Rust实现了Bitwarden相似的功能,两者均开源。不过Bitwarden需要较多的依赖(如MSSQL),占用内存也比较大,如果是个人或家庭使用,推荐更加轻量的bitwarden_rs,并且bitwarden_rs还可以免费使用Bitwarden的一些高级功能,如附件上传、TOTP等功能。
安装bitwarden_rs
作者提供了Docker安装方式,因此我们需要先安装Docker(注意:OpenVZ虚拟化不支持Docker),安装Docker方法如下:
#安装Docker
yum -y install docker
#启动docker
systemctl start docker
#开机自启
systemctl enable docker
接下来使用Docker拉取bitwarden_rs镜像并运行
docker pull bitwardenrs/server:latest
docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest
上方使用了80端口,如果您已经安装了WEB服务,可能会导致冲突,可以将bitwarden_rs映射的端口修改为其它,比如8880
docker run -d --name bitwarden -v /bw-data/:/data/ -p 8880:80 bitwardenrs/server:latest
配置反向代理
下方是xiaoz的Nginx反向代理配置,主要是方便使用域名方式访问bitwarden_rs,内容仅供参考,请根据实际情况修改:
server
{
listen 443 ssl http2;
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /data/ssl/youdomAIn.com.crt;
ssl_certificate_key /data/ssl/youdomain.com.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;
server_name youdomain.com;
client_max_body_size 128M;
location / {
proxy_set_header Host 'youdomain.com';
proxy_pass http://127.0.0.1:8880;
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:8880;
}
}
如果不出意外,访问您的域名https://youdomain.com
就能看到Bitwarden界面。
遇到的一些问题
Google Chrome浏览器无法登录?
某些网络浏览器(例如Chrome)不允许在不安全的上下文中使用Web Crypto API。在这种情况下,您可能会收到类似的错误Cannot read property 'importKey'
。要解决此问题的办法就是配置https访问。
参考了bitwarden_rs配置SMTP,但是邮件发送失败?
xiaoz使用的SMTP SSL方式发送邮件,但是未能成功,解决办法是禁用TLS即可:SMTP_EXPLICIT_TLS=true
总结
bitwarden_rs可以很轻松的实现自建密码管理,Bitwarden提供全平台客户端,使用起来非常方便。相比keepass,Bitwarden拥有更高的颜值和更加方便的管理方式。相比LastPass,Bitwarden是开源的,完全可以自建,不再忍受LastPass糟糕的网络。
如果不想自建的童鞋,Bitwarden也提供在线服务:https://vault.bitwarden.com/#/ ,可以直接注册账号使用。
- bitwarden_rs项目地址:https://github.com/dani-garcia/bitwarden_rs
- 此文部分内容参考了:bitwarden_rs文档
- Bitwarden官方地址:https://bitwarden.com/