为 qBittorrent WebUI 安装 Let's Encrypt 的 HTTPS 证书

in Linux with 28 comments

简介

  为 qBittorrent WebUI 设置 Let's Encrypt 的 HTTPS 证书和简单。而通过这种方法添加的证书,相比于自签证书,因为所有的现代浏览器都会默认信任 Let's Encrypt 的证书,所以在访问网页的时候,你不会得到警告也无需因此添加安全例外。
  在阅读此教程之前,我们假定你已经安装好了qBittorrent-nox,同时

安装 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 的方法来获取证书。在此之前你还需要:

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)。
注意:下面的在上面使用过的六个选项是可选的,但是有利于更强的安全:

在 Web UI 上安装证书

  1. 打开你的 Web UI。
  2. 在 Tools -> Options... 菜单中,进入 Web UI 标签。
  3. 在 “Sever domain:” 空格中填入你的域名。
  4. 勾选 “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 权限来访问次文件。
  5. 点击保存,关闭标签然后你现在只能通过 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 推荐的一天运行一次或两次。

参考

Comments are closed.