简介
为 qBittorrent WebUI 设置 Let's Encrypt 的 HTTPS 证书和简单。而通过这种方法添加的证书,相比于自签证书,因为所有的现代浏览器都会默认信任 Let's Encrypt 的证书,所以在访问网页的时候,你不会得到警告也无需因此添加安全例外。
在阅读此教程之前,我们假定你已经安装好了qBittorrent-nox,同时
- 你知道如何并且会在你的路由上转发端口
- 你已经设置好 DNS 指向你运行 WebUI 的 ip。
安装 certbot
certbot
是 ACME 推荐的用于申请和管理 Let's Encrypt 证书的客户端。虽然你可以从 Ubuntu 官方的 repositories 安装它,但从 PPA 安装的则是最新的稳定版,所以我们安装这个。
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot
获得证书
在此过程中,你需要确保 80 或是 443 端口不被占用。如果你的主机上还有其他的软件占用了 443 端口,就使用 80 端口,反之亦然。在此例中我们将使用 80 端口来进行证书签发。如果你想使用 443 端口,除了端口号要改变,你还需要在以下命令中将 --preferred-challenges
的参数从 http
替换为 tls-sni
。关于这点可以查看 certbot
的相关文档获取更多信息。
这里我们将用 standalone 的方法来获取证书。在此之前你还需要:
- 暂时将占用 80 端口的程序或服务停止。
- 在你的路由器里转发 80 端口。
如果你还没有打开在防火墙(很有可能是
ufw
)中打开 80 端口,请把它打开。现在运行以下命令来获得你的证书(注意用你的实际域名替换yourwebuidomain):
sudo ufw allow 80
sudo ufw reload
sudo certbot certonly --standalone --preferred-challenges http --must-staple --redirect --hsts --uir --staple-ocsp --rsa-key-size 4096 --domain yourwebuidomain
当证书生成成功后你就可以重启你的监听 80 端口的任何程序或者是重新屏蔽 80 端口(sudo ufw deny 80 && sudo ufw reload
)。
注意:下面的在上面使用过的六个选项是可选的,但是有利于更强的安全:
- --rsa-key-size 4096
- --must-staple
- --redirect
- --hsts
- --uir
- --staple-ocsp
查阅文档获取更多信息。
在 Web UI 上安装证书
- 打开你的 Web UI。
- 在 Tools -> Options... 菜单中,进入 Web UI 标签。
- 在 “Sever domain:” 空格中填入你的域名。
- 勾选 “Use HTTPS instead of HTTP”。
如果你使用的是
4.2.0
或者更新的版本:- 在 ”Key:“ 文本框中粘贴上密钥文件路径。
- 在 ”Certificate:“ 文本框中粘贴上证书文件路径。
- 注意事项:因为往往这些文件所处的位置,例如,路径
/etc/letsencrypt/live/yourwebuidomain/
,对root
而言是只读的。这就意味着,你也许需要先将这些文件(即密钥和证书)复制到某些目录,某些你运行 qBittorrent 所在的用户账号可读的目录。请不要修改cerbot
原始目录的权限。
如果你使用旧一些的版本:
- 在 ”Key:“ 文本框中粘贴上密钥文件的内容。密钥可能存储在
/etc/letsencrypt/live/yourwebuidomain/privkey.pem
,你也许需要root
权限来访问次文件。 - 在 ”Certificate:“ 文本框中粘贴上证书文件的内容。证书可能存储在
/etc/letsencrypt/live/yourwebuidomain/fullchain.pem
,你也许需要root
权限来访问次文件。
- 在 ”Key:“ 文本框中粘贴上密钥文件的内容。密钥可能存储在
- 点击保存,关闭标签然后你现在只能通过 HTTPS 来访问你的 Web UI。
自动续期证书
你的证书会在 90 天后到期,你可以手动续期他们或是为你的证书设置自动续期。
对于不经常使用 80 端口的用户,这儿给出一种可能的的命令:
sudo certbot renew --pre-hook "ufw allow 80 && ufw reload" --post-hook "ufw deny 80 && ufw reload
如果你有程序在监听 80 端口,确保使用 --pre-hook
和 --post-hook
参数来重启他。例如,--pre-hook "stop_my_program.sh"
和 --post-hook "restart_my_program.sh"
。
另外,也可以使用 cerbot
的钩子来复制证书文件或是关闭和重启 qBittorrent ,甚至可以修改其配置。
每次命令运行时,certbot
都会检查是否有证书已经超过 60 天,并且并更新过期的证书。
你可以将你续期命令写入 crontab 或是 systemd unit 并设置成 Let's Encrypt 推荐的一天运行一次或两次。
参考
本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Feb 25, 2020 at 09:38 am