Skip to main content

Bitwarden 配置 Let’s Encrypt 证书

由于在内网环境部署的Bitwarden,不能通过安装脚本自动申请Let’s Encrypt 的证书。

起初我用了一个自签名证书,发现特别不好使,虽然在firefox 跟 chrome 内核的浏览器上都能通过插件访问,但必须添加信任才行,特别是用Bitwarden Desktop 客户端连的时候,一直报错,可能是不认自签名证书。 于是琢磨了下怎么手动申请Let’s Encrypt的证书用于内网,对过程简单梳理如下。

自签名证书 | Self-Signed Certificate

自签名证书浏览器状态

如果你在内网环境只需要自签名证书,可以参考Bitwarden的帮助文档(Installing and depoying)进行设置:

1、生成自签名证书:

//一条命创建私钥和证书:
openssl req -x509 -newkey rsa:4096 -sha256 –nodes -days 10950 \
   -keyout privite.key -out identity.crt \
   -subj "/C=US/ST=New York/L=New York/O=Company Name/OU=CREAST /CN=bw.creast.win"

将生成的文件放到 /ssl 目录下:

privite.key     ~/bwdata/ssl/bw.creast.win/private.key

identity.crt     ~/bwdata/ssl/bw.creast.win/identity.crt

2、生成.pfx格式证书文件:

//一条命令将前面生成的私钥和证书打包成需要的pfx格式文件

openssl pkcs12 -export -out ./identity.pfx -inkey privite.key \
   -in identity.crt -certfile identity.crt -passout pass:IDENTITY_CERT_PASSWORD

注意 IDENTITY_CERT_PASSWORD 跟./env/global.override.env 配置内容保持一致;

执行成功后将生成的 文件,放到 /identity 目录下:

identity.pfx    ~/bwdata/identity/identity.pfx  

以上操作直接在部署Bitwardern 的机器上执行。

证书申请前提条件

  1. 有公网DNS解析正常的域名 (用于通过Let's Encrypt 证书申请的验证)
  2. 该域名指向公网上的一台能正常响应的主机(能ping通,该主机上不要求运行任何服务)
  3. 一台能访问外网的机器,安装Let's Encrypt 的命令行工具Certbot ,以ubuntu 为例:
  4. $ sudo apt-get install certbot

  

申请 Let's Encrypt 证书

Let's Encrypt证书浏览器状态

关于 certbot 的功能跟原理这里不多讲,这里重点说一下如何以 manual 方式申请证书。以下操作步骤在一台能访问外网的机器上执行,如果你部署bitwarden的机器可以访问外网可以直接在上面执行:

1、选择以dns认证方式申请证书:

sudo certbot certonly --manual --preferred-challenges dns

填写完基本信息后会要求你在dns记录里添加一条指定内容的的 TXT 记录,如:

_acme-challenge.bw.creast.win. 300 IN TXT "gfj9Xqa2gVbHjl….FtkDRg85nM"

2、登录你的域名服务商后台,添加 TXT 记录:

DNS TXT Record

3、验证TXT DNS 记录

在回车确认前,先用dig 检查一下dns 记录是否已经生效:

dig -t txt _acme-challenge.bw.creast.win
确认;; ANSWER SECTION: 部分跟验证指定的内容一致后再回车;

4、成功生成证书

待 certbot 程序验证通过后会生成多个pem格式的证书相关文件,并存放在 /etc/letsencrypt/live/ 目录下,分别是:

let’s Encrypt 文件 文件说明 对应nginx ssl 设置
`privkey.pem` the private key for your certificate ssl_certificate_key
`fullchain.pem` the certificate file used in most server software. ssl_certificate
`chain.pem` used for OCSP stapling in Nginx >=1.3.7.  
`cert.pem`

will break many server configurations, and should not be used  without reading further documentation

 

这里 privkey.pem 跟 fullchain.pem 是需要用到的私钥和证书文件,将他们复制一份到部署Bitwarden机器 bwdata/ssl/bw.creast.win  目录下

5、生成.pfx格式证书文件:

//同自签名证书一样,命令中的私钥和证书文件将使用通过 certbot 申请获得的:     
openssl pkcs12 -export -out ./identity.pfx -inkey privkey.pem \
   -in fullchain.pem -certfile fullchain.pem -passout pass:IDENTITY_CERT_PASSWORD
注意 IDENTITY_CERT_PASSWORD 跟./env/global.override.env 配置内容保持一致;

执行成功后将生成的 文件,放到部署Bitwarden机器的 bwdata/identity 目录下。至此,配置Bitwarden nginx SSL所需的证书文件都准备就绪。

更新SSL相关配置

1、更新 bwdata/config.yml  配置文件,将ssl相关配置修改为实际环境值,例如:

url: https://bw.creast.win
ssl: true
ssl_managed_lets_encrypt: false
ssl_certificate_path: /etc/ssl/bw.creast.win/fullchain.pem
ssl_key_path: /etc/ssl/bw.creast.win/privkey.pem

2、更新 Bitwarden docker 配置文件,重启bitwarden服务

./bitwarden.sh stop

./bitwarden.sh rebuild

./bitwarden.sh start

待所有服务重新起来后,在浏览器访问可以看到已经是绿标,显示证书来自“ Let's Encrypt”。用 Bitwarden Desktop 客户端连接也正常了。

Let's Encrypt证书

Comments

Popular posts from this blog

关于VMware虚拟网卡网络问题的处理

本篇适用情形: VMware虚机拷贝或移动后网络问题 其它虚机格式转换VMware虚机后网络问题 VMware虚机虚拟网卡设置问题 修改VMware虚机虚拟网卡类型 Ubuntu 16.04虚拟机网卡设置问题 Highlight: /etc/network/interface       //网卡配置文件(ubuntu) lspci -vk lsmod ifconfig –a ethtool resolvconf -u 正文: 【 Step1】 在着手解决问题之前,先查看一下VMware虚机的网卡配置是否正常。打开虚机目录下的 xxx.vmx   文件,找到虚拟网卡的配置信息(第1块网卡通常为ethernet0),例如: VMware虚拟网卡有以下几种设备类型: ethernet0.virtualDev = "vlance"          //AMD PCNet AM79C970A 10/100Mbps ethernet0.virtualDev = "e1000"          //Intel(R) 82545EM PRO/1000 PCI ethernet0.virtualDev = "e1000e"        //Intel(R) 82545L PRO/1000 PCIe ethernet0.virtualDev = "vmxnet"        //VMware PCI Ethernet Adapter VMware Workstation / Player 建的虚机默认“vlance” 是一块比较老的百兆网卡,可以修改为e1000或e1000e(这两者的区别可以看做一块是pci网卡一块是pcie接口网卡);没有正常安装vmware tools的情况下,不建议改为“vmxnet”。 以下内容在Ubuntu 16.04 LTS虚机下进行。 【 Step2】 执行ifconfig查看网口配置信息,可能只有环回口的信息: 执行ifconfig –a 查看系统识别到的所有网口,如果能查看到其它网口信息,例如: 说明虚拟网卡的驱动是ok的,继续 Step3 。 这是一块e1000e的虚拟网卡,根

Tor洋葱路由的设置与使用

先说明一下,这里只是利用Tor来访问被GWF屏蔽的优秀服务(如Wikipedia、Blogger、GG App等),并不侧重于如何匿名访问网络。以下Tor设置方法适用于: MS Windows(2000/XP/Vista/Server)系统 第一步:下载并安装Tor 关于Tor(The Onion Router,洋葱路由)的工作原理,可以参考枪旗工作室的说明 ( http://tcno.net/doc/tor/#para1 )。在Windows下安装配置Tor已经非常容易了,直接下载这样一个Tor的Windows 捆绑软件包( Vidalia-Tor-Privoxy Bundle ),其中已经预先配置好这些软件能够一同工作。 安装前可以看到套件捆绑了哪些软件:Tor、Vidalia(Tor 的一个图形用户界面)和 Privoxy(Web 代理软件)、Torbutton(Firefox浏览器插件)全选这些软件进行安装。 安装完成后会自动运行Vidalia,在弹出的控制面板上可以看到当前的状态,Tor已经运行了,此时不需要再进行其它设置了。 第二步:配置浏览器使用Tor 如果使用 Firefox 浏览器,Bundle里已经附带了 Torbutton 插件 ,打开/重启Firefox就会在右下角显示Tor Enabled/Disabled,单击它可以选择是否开启Tor代理功能。 对于 Internet Explorer 没有现成的插件可用,需要手动配置代理设置,也很容易。 菜单位置 工具 - Internet 选项 - 连接 - 局域网设置 - 代理服务器 - 高级 - 服务器 在代理理服务器地址栏里填入 "localhost",端口为 "8118"(Privoxy不支持FTP代理,填不填都无所谓了);注意套接字SOCKS代理的端口为 "9050",如果有其它选项,请选择Socks5,然后"确定"即可。 对于 Maxthon ,如果对IE设置了Tor可以选择“使用IE代理设置”,或者手动添加一个代理列表,内容与上面填写的一样,然后选择应用就可以了。 这里说明一下 Privoxy 的作用,因为当直接使用 SOCKS 代理时,浏览器会泄露