证书选项
Let's Encrypt 是一个证书颁发机构(CA - Certificate Authority),可以为任何域名颁发免费的可信的 SSL 证书。Bitwarden 安装脚本提供了使用 Let's Encrypt 和 Certbot 为你的域名生成可信 SSL 证书的选项。
每次重新启动 Bitwarden 时,都会进行证书更新检查。使用 Let's Encyrpt 会要求你输入一个电子邮件地址来获取证书到期提醒。
使用 Let's Encrypt 需要在你的机器上开放 80 和 443 端口。
如果更改了 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 <[email protected]> --logs-dir /etc/letsencrypt/logs
选择 1,然后按照说明进行操作:
openssl dhparam -out ./bwdata/letsencrypt/live/<your.domain.com>/dhparam.pem 2048
./bitwarden.sh rebuild
./bitwarden.sh start
PowerShell

需要安装适用于 Windows 的 OpenSSL 构建。
.\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 <[email protected].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 证书,这要求您已经拥有如下的文件:
- 服务器证书(
certificate.crt
) - 私钥(
private.key
) - CA 证书(
ca.crt
)
你可能需要将主证书与中间 CA 证书捆绑在一起,以防止 SSL 信任错误。当使用根 CA 和中间 CA 证书时,所有证书都应该包含在服务器证书文件中。
在默认配置下,将你的文件放在
./bwdata/ssl/your.domain
中。你可以通过编辑 ./bwdata/config.yml
中的以下值来指定证书文件的不同位置:ssl_certificate_path: <path>
ssl_key_path: <path>
ssl_ca_path: <path>
config.yml
中定义的值代表了 NGINX 容 器内的位置,主机上的目录被映射到 NGINX 容器内的目录。在默认配置下,映射如下:config.yml
中的以下值:ssl_certificate_path: /etc/ssl/your.domain/certificate.crt
ssl_key_path: /etc/ssl/your.domain/private.key
ssl_ca_path: /etc/ssl/your.domain/ca.crt
映射到主机上的以下文件:
./bwdata/ssl/your.domain/certificate.crt
./bwdata/ssl/your.domain/private.key
./bwdata/ssl/your.domain/ca/crt
您只需要在
./bwdata/ssl/
中处理这些文件。不建议直接在 NGINX 容器中处理这些文件。(可选)如果使用 Diffie Hellman 密钥交换生成临时参数:
- 在同一目录中包含
dhparam.pem
文件。 - 在
config.yml
中设置ssl_diffie_hellman_path:
值。
您可以使用 OpenSSL 的
openssl dhparam -out ./dhparam.pem 2048
命令来生成自己的 dhparam.pem
文件。您也可以选择使用自签名证书,但这只建议用于测试。
默认情况下,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 上信任自签名证书,请运行
certmgr.msc
并将证书导入受信任的根证书颁发机构中。要在 Linux 上信任自签名证书,请将证书添加到以下目录中:
/usr/local/share/ca-certificates/
/usr/share/ca-certificates/
然后进行以下命令:
sudo dpkg-reconfigure ca-certificates
sudo update-ca-certificates
对于 Bitwarden Linux 桌面应用程序,使用基于 Chromium 的浏览器访问网页密码库,以及访问 Directory Connector 桌面应用程序,您还需要完成此 Linux 证书管理过程。
export NODE_EXTRA_CA_CERTS=~/.config/Bitwarden/certificate.crt
如果您不是自托管并且在您的 android 设备上遇到以下证书错误:
Exception message: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
如果您选择不使用证书,则必须在您的 Bitwarden 安装的前端使用 SSL 代理。这是因为 Bitwarden 需要 HTTPS。尝试在没有 HTTPS 协议的情况下使用 Bitwarden 将触发错误。