本文定义了 Bitwarden 自托管实例可用的证书选项。您可以在安装过程中选择证书选项。设置或更改证书配置总是需要您在启动 Bitwarden 之前运行 ./bitwarden.sh rebuild
或 .\bitwarden.ps1 -rebuild
命令来应用对 config.yml 文件的更改。
使用 Let’s Encrypt 生成证书
是一个证书颁发机构(CA - Certificate Authority),可以为任何域名颁发免费的可信的 SSL 证书。Bitwarden 安装脚本提供了使用 Let's Encrypt 和 为你的域名生成可信 SSL 证书的选项。
每次重新启动 Bitwarden 时,都会进行证书更新检查。使用 Let's Encyrpt 会要求你输入一个电子邮箱地址来获取证书到期提醒。
Let's Encrypt 是一个第三方证书颁发机构,它要求 80 和 443 端口可以从互联网访问,以便验证你的域名并颁发证书。如果您没有或不想设置互联网入站访问,您可以使用本文档中的其他证书选项。
手动更新 Let's Encrypt 证书
如果您更改了 Bitwarden 服务器的域名,则需要手动更新已生成的证书。运行以下命令以创建备份、更新证书并重建 Bitwarden:
Bash
./bitwarden.sh stop
mv ./bwdata/letsencrypt ./bwdata/letsencrypt_backup
mkdir ./bwdata/letsencrypt
chown -R bitwarden:bitwarden ./bwdata/letsencrypt
chmod -R 740 ./bwdata/letsencrypt
docker pull certbot/certbot
docker run -i --rm --name certbot -p 443:443 -p 80:80 -v <Full Path from / >/bwdata/letsencrypt:/etc/letsencrypt/ certbot/certbot certonly --email <user@email.com> --logs-dir /etc/letsencrypt/logs
选择 1,然后按照说明进行操作:
openssl dhparam -out ./bwdata/letsencrypt/live/<your.domain.com>/dhparam.pem 2048
./bitwarden.sh rebuild
./bitwarden.sh start
.\bitwarden.ps1 -stop
mv .\bwdata\letsencrypt .\bwdata\letsencrypt_backup
mkdir .\bwdata\letsencrypt
docker pull certbot/certbot
docker run -i --rm --name certbot -p 443:443 -p 80:80 -v <Full Path from \ >\bwdata\letsencrypt\:/etc/letsencrypt/ certbot/certbot certonly --email <user@email.com> --logs-dir /etc/letsencrypt/logs
Select 1, then follow instructions
<path/to/openssl.exe> dhparam -out .\bwdata\letsencrypt\live\<your.domain.com>\dhparam.pem 2048
.\bitwarden.ps1 -rebuild
.\bitwarden.ps1 -start
使用现有的 SSL 证书
您也可以选择使用现有的 SSL 证书,这要求您已经拥有如下的文件:
您可能需要将主证书与中间 CA 证书捆绑在一起,以防止 SSL 信任错误。当使用根 CA 和中间 CA 证书时,所有证书都应该包含在服务器证书文件中。
在默认配置下,将您的文件放在 ./bwdata/ssl/your.domain
中。您可以通过编辑 ./bwdata/config.yml
中的以下值来指定证书文件的不同位置:
ssl_certificate_path: <path>
ssl_key_path: <path>
ssl_ca_path: <path>
使用 Diffie-Hellman 密钥交换
(可选)如果使用 Diffie Hellman 密钥交换生成临时参数:
在 config.yml
中设置 ssl_diffie_hellman_path:
值。
使用自签名证书
您也可以选择使用自签名证书,但这只建议用于测试。
默认情况下,Bitwarden 客户端应用程序不会信任自签名证书。您需要手动将该证书安装到您计划使用 Bitwarden 的每一个设备的受信任存储中。
生成自签名证书:
mkdir ./bwdata/ssl/bitwarden.example.com
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -days 365 \
-keyout ./ssl/bitwarden.example.com/private.key \
-out ./ssl/bitwarden.example.com/certificate.crt \
-reqexts SAN -extensions SAN \
-config <(cat /usr/lib/ssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:bitwarden.example.com\nbasicConstraints=CA:true')) \
-subj "/C=US/ST=New York/L=New York/O=Company Name/OU=Bitwarden/CN=bitwarden.example.com"
您的自签名证书(.crt
)和私钥(private.key
)文件可以放置于 ./bwdata/ssl/self/your.domain
目录并将其配置到 ./bwdata/config.yml
中:
ssl_certificate_path: /etc/ssl/bitwarden.example.com/certificate.crt
ssl_key_path: /etc/ssl/bitwarden.example.com/private.key
信任自签名证书
Windows
要在 Windows 上信任自签名证书,请运行 certmgr.msc
并将证书导入受信任的根证书颁发机构中。
Linux
要在 Linux 上信任自签名证书,请将证书添加到以下目录中:
/usr/local/share/ca-certificates/
/usr/share/ca-certificates/
然后进行以下命令:
sudo dpkg-reconfigure ca-certificates
sudo update-ca-certificates
export NODE_EXTRA_CA_CERTS=~/.config/Bitwarden/certificate.crt
Android
不使用证书
如果您选择不使用证书,则必须在您的 Bitwarden 安装的前端使用 SSL 代理。这是因为 Bitwarden 需要 HTTPS。尝试在没有 HTTPS 协议的情况下使用 Bitwarden 将触发错误。