因此,当我像往常一样更新我的 Ubuntu 18.04 系统时,我注意到 apt 存储库是通过 HTTP 访问的。快速的互联网搜索证实了这是标准(至少对于 ubuntu 而言),但没有找到原因。现在我知道 apt 会对软件包执行签名/健全性检查,但为什么没有使用 HTTPS?
编辑2019-01-24:鉴于最近由于 HTTP 通信而导致的 RCE 漏洞,我想指出我发现的有关此主题的一些当前链接。
https://whydoesaptnotusehttps.com/-> 一个单一目的的网站,仅用于解释为什么 HTTP 就足够了。
https://justi.cz/security/2019/01/22/apt-rce.html-> 如何利用 HTTP 连接在目标主机上执行任意代码(以及如何保护自己免受此类攻击)。
https://usn.ubuntu.com/3863-1/-> Ubuntu 安全通知
https://lists.debian.org/debian-security-announce/2019/msg00010.html-> Debian 安全公告。
答案1
大多数情况下,文件是从镜像下载的,而不是从 ubuntu 服务器下载的,所以即使 ubuntu 网站使用 HTTPS,你也要从http://ubuntu.unc.edu.ar/ubuntu/
或等网站下载文件http://ubuntu.mirror.lrz.de/ubuntu/
。
为了解决这个问题,APT 下载的文件具有签名,允许根据存储在您的计算机上的公钥进行验证,以确保它是由 Ubuntu 签名的,且仅由 Ubuntu 签名。
答案2
在我看来,这是因为对于目的而言,这一层是不必要的!我的意思是需要 https 来加密网络上的数据,以避免以明文形式发送敏感数据(永远不要在 http 协议中验证自己)。所以那里没有流量需要保护,大部分代码都是开源的,可以下载和重新分发。需要保护的是二进制包本身,但为此,存储库中的所有包都是数字签名的,如果您的包管理器上未安装公钥,则会通知您开始安装的软件来自不受信任的地方。