本文定义了可用于 Bitwarden 的自托管实例的证书选项。您需要在安装过程中选择您的证书选项。有关安装说明,请参阅本地安装和部署。
使用 Let’s Encrypt 生成证书
Let's Encrypt 是一个证书颁发机构(CA - Certificate Authority),可以为任何域名颁发免费的可信的 SSL 证书。Bitwarden 安装脚本提供了使用 Let's Encrypt 和 Certbot 为你的域名生成可信 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
需要安装适用于 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 <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>
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 密钥交换
(可选)如果使用 Diffie Hellman 密钥交换生成临时参数:
在 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
要在 Windows 上信任自签名证书,请运行 certmgr.msc
并将证书导入受信任的根证书颁发机构中。
Linux
要在 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 证书管理过程。
对于 Bitwarden CLI 和目录连接器 CLI,您的自签名证书必须存储在本地文件中并由 NODE_EXTRA_CA_CERTS=
环境变量引用,例如:
export NODE_EXTRA_CA_CERTS=~/.config/Bitwarden/certificate.crt
Android
要信任 Android 设备上的自签名证书,请参阅 Google 文档:添加和移除证书。
如果您不是自托管并且在您的 android 设备上遇到以下证书错误:
Exception message: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
您需要将 Bitwarden 证书上传到您的设备中。有关查找证书的帮助信息,请参阅此社区话题。
不使用证书
如果您选择不使用证书,则必须在您的 Bitwarden 安装的前端使用 SSL 代理。这是因为 Bitwarden 需要 HTTPS。尝试在没有 HTTPS 协议的情况下使用 Bitwarden 将触发错误。