如何强制 apt 仅使用 HTTPS?

如何强制 apt 仅使用 HTTPS?

如何强制 apt 仅使用 HTTPS?

这个问题旨在为问题提供全面可行的答案12, 和3,但措辞方式更符合 stackexchange 网站的准则和规则。

答案1

要强制 apt 专门使用 https 并且不以任何方式使用 http,您需要做三件事:

  1. 确保您的 apt 版本能够通过以下方式下载软件包https
  2. 确保所有来源都可以通过以下方式访问https
  3. 确保 apt 不能透明地重定向到使用http

步骤 1:启用 HTTPS 支持

最新版本的 apt 应该内置或默认安装并启用 https 支持。如果没有,请手动安装 https 支持:

sudo apt install apt-transport-https

第 2 步:检查你的来源

下一步是扫描 apt 配置以查找不安全的来源。打开终端并运行:

grep -nrE '^[ \t]*deb[ \t]+' '/etc/apt'

此命令应检查所有 apt 源并打印它们以及文件名和行号。逐个检查这些源,将每个不安全的源更改为安全的源。此上下文中的安全源将以“https://”开头。

https://mirrors.kernel.org/ubuntu/是众所周知的替代品,虽然http://[COUNTRY_CODE.]archive.ubuntu.com/ubuntu/有时速度会比较慢,但效果很好。您所在地区的 ubuntu 镜像可能支持 https 和普通 http,但这并不能保证,而且可能不可靠(可以更改域以指向不支持 https 的镜像)。YMMV。

步骤 3:黑名单HTTP

遗憾的是,我还没有找到仅通过 apt 的配置来实现这一点的方法。但是,如果您愿意使用ufw预装在所有 ubuntu 桌面上的防火墙,则可以过滤掉 apt 的 http 请求,同时允许安全请求通过。此步骤是一种预防措施,用于解决步骤 1 和 2 中的任何错误,以及解决我可能遗漏的任何配置选项。此步骤不考虑代理或非标准端口。

注意:ufw可用于拒绝来自单个应用程序(如apt)的不安全连接,也可用于拒绝系统范围内的不安全连接。以下是设置系统范围拒绝的说明,因为这是我个人在系统上使用的方法。

要拒绝不安全的默认 http 连接,请添加以下规则ufw

sudo ufw deny out to any port 80

然后运行以下命令启用防火墙:

sudo ufw enable

此时,apt 和系统上的所有其他程序都不再能够通过不安全的连接进行连接。

如果您发现由于某种原因需要允许不安全的连接,您可以随时禁用防火墙或删除规则。

sudo ufw enable                             # Disables firewall
sudo ufw delete deny out to any port 80     # Removes rule 

干杯!

答案2

头上着棍写下这个来将 http 更改为 https:

sudo sed -i 's|http:|https:|' /etc/apt/sources.list
sudo sed -i 's|http:|https:|' /etc/apt/sources.list.d/*.list
sudo apt update

相关内容