答案1
要强制 apt 专门使用 https 并且不以任何方式使用 http,您需要做三件事:
- 确保您的 apt 版本能够通过以下方式下载软件包
https
- 确保所有来源都可以通过以下方式访问
https
- 确保 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