如何配置一个自动更新SSL证书的Bitwarden密码服务

缘起

随着年龄的增长,发现记忆力有逐渐下降的趋势。同时有N多注册过的网站、6位QQ号等等都因为时间关系忘记了账号或密码。就关注上了密码管理软件,最疯狂的时候,我的手机上同时安装了不下5、6个密码管理软件。

最开始的时候使用过keepass,但是其免费版本没有提供云同步功能,只能基于Google Drive、Dropbox等软件碾转进行,一不小心就需要进行合并。体验并不是很好。并且当时与iOS系统的密码服务集成了的app都需要收费,免费的app没有办法直接唤起填密码,体验差了1Password等软件不少。后来就弃用了。

1Password一直听说其大名,但一直没有购买。忘了在哪一年,有一次在iOS进行大版本升级的时候,1Passwrod因为App Store的bug,可以免费获取,1Password也因此专门发了一篇blog,话中语气挺无奈的。我也就趁着那一次机会免费将买断制的1Password收入囊中,用了很长一段时间。

另外,还尝试过很多其他软件,比如EnPass、RoboForm、LastPass等,但因为这样那样的原因,都逐渐弃用。

在2019年前后碰到Bitwarden之后,因为其与iOS的集成友好、全平台支持、并且能自建服务器(All my data is belong to me!),逐渐将所有的密码都迁移到了其中,到目前已经有好多年的时间了。

下表是我使用过的,仍然有印象的一些软件的记录,有些软件因为时间久远、并且成文之时我没有专门检查,所列信息如有谬误之处,还请海涵:

密码软件是否收费是否开源是否支持多平台是否支持跨平台/设备同步公有云平台自建服务器云同步方案使用体验
Chrome/Safari等浏览器密码管理功能公有云平台与自身浏览器的集成非常好。
跨浏览器支持应该是没有的。
1Password公有云平台、买断制可以使用iCloud某次iOS升级造成bug,0元买断。
使用体验整体来说非常好。
EnPass公有云平台、iCloud
RoboForm时间久远,忘记了。。。
LastPass与浏览器集成,没有独立app。
曾经出过安全事故。
KeePassWebDAV、Google Drive、Dropbox等同步、浏览器集成体验较差
Bitwarden公有云平台、自建服务器非常好!
现在的选择
1. 所有这些密码管理软件,公有云平台同步都是收费功能。
2. 因为有的软件使用时间在很久之前,加上软件自身也在不断更新进步。如果上表有谬误,烦请提出,我将跟进修正。

Bitwarden介绍

以下介绍来自维基百科

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

Bitwarden提供了四种类型的记录,我们一般使用得最多的就是登录信息:

  • 登录信息
    • 也就是通常所说的密码管理服务
  • 安全笔记
    • 可以加密的文本或者结构化信息
    • 也可以当成一个简单的CMDB来用
  • 支付卡
    • 储蓄卡、信用卡信息
  • 身份
    • 记录SSN等信息

除此之外,它还支持了TOTP,自身登录也支持多种2FA。如果有需要的话,也可以将文件当作附件加入到Bitwarden的条目中进行管理。

如果需要的话,你可以到他的官网购买公有云托管服务,也可以自建服务器。

下文将介绍如何如何搭建一个Self-hosted的Bitwarden服务器端。如有需要,请参照上一篇文章了解如何配置traefik的服务自发现能力。

搭建Bitwarden服务器

闲话少说,先上Bitwarden的Docker Compose配置文件:

version: '3'

services:
  bitwarden:
    image: 'vaultwarden/server'
    container_name: bitwarden
    restart: unless-stopped
    networks:
      - web
    ports:
      - 8080:80  # 使用Traefik做反向代理的话,可以注释掉本段
    volumes:
      - './data:/data'                   # 映射本地数据储存目录
      - /etc/localtime:/etc/localtime:ro # 可选,使容器与本机时间同步
    environment:
      - SIGNUPS_ALLOWED=true                   # 是否允许自注册
      - DOMAIN=https://bitwarden.example.com   # 对外暴露的域名
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=web"

      - "traefik.http.routers.bitwarden.rule=Host(`bitwarden.example.com`)"
      - "traefik.http.routers.bitwarden.tls.certresolver=cfresolver"
      - "traefik.http.services.bitwarden.loadbalancer.server.port=80"

networks:
  web:
    external:
      true

请注意以下内容:

  • image: 'vaultwarden/server'
    • 我这里没有使用官方的服务器镜像,使用的是一个使用Rust写的第三方兼容服务器镜像。他的GitHub项目位于:
      • https://github.com/dani-garcia/vaultwarden
    • 它的优势在于:
      • 轻量,资源占用低;树莓派就能跑
      • 部署简单
      • 无须数据库服务器支持(也可以使用MySQL/PostgreSQL)
  • ports:
    • 如果使用反向服务器(Reverse Proxy)作为前端,可以删除本段
    • 如果不熟悉Reverse Proxy,建议先保留本段,完全调试通过后,再删除或注释掉本段
  • labels:
    • 本段所有内容,都是用来与traefik集成。其中:
      • "traefik.docker.network=web"
        • traefik可以通过external name为web的docker network访问到Bitwarden服务器
      • "traefik.http.routers.bitwarden.rule=Host(`bitwarden.example.com)`"
        • Bitwarden服务器对外暴露的域名
      • "traefik.http.routers.bitwarden.tls.certresolver=cfresolver"
      • "traefik.http.services.bitwarden.loadbalancer.server.port=80"
        • Bitwarden服务器的端口号。traefik将使用这个端口作为目标端口来转发所有发送到Bitwarden服务器的http请求。

启动成功后,你就可以使用 http://YOUR-IP-ADDRESS:8080/ 或者 https://bitwarden.example.com 访问Bitwarden服务器并进行配置了。Bitwarden配置简单,所以具体细节本文略过不表。

NOTE: 此时你没有安装traefik也没有关系,这样的话,labels里面的内容将会被忽略。

在服务器上配置好用户后,就可以直接配置Bitwarden客户端进行使用了。

Bitwarden客户端配置

Bitwarden提供了主流浏览器、以及全平台的客户端,大家可以从Bitwarden的官网进行下载各平台客户端:

  • https://bitwarden.com/download/

本文仅以macOS客户端为例展示如何配置。

配置

  • 安装好启动Bitwarden客户端后,我们点击“登录到”最右边的下拉箭头,选择“自托管”:
  • 在弹出窗口中,输入你的Bitwarden服务器URL后,点击图标进行保存:
  • 这时候,就可以逐次输入账号以及密码进行登录使用了

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注