是否apt-get
使用 https 或任何类型的加密?是否有方法配置它以使用它?
答案1
apt-get
(以及其他软件包操作命令,它们是相同 APT 库的前端)可以使用 HTTP、HTTPS 和 FTP(以及已安装的文件系统)。如果您在和中指定https://
URL ,则 APT 将使用 HTTPS。/etc/apt/sources.list
/etc/apt/sources.list.d/*
APT 会验证软件包的签名。因此,您不需要使用提供数据认证的传输方式。如果攻击者修改了您正在下载的文件,就会注意到这一点。使用签名验证比使用 HTTPS 连接更好,因为它会检测到您正在下载的服务器上的攻击,而不仅仅是传输中的攻击。
更准确地说,包的(简化)数据流如下:
- 该包是在构建机器上生成的。
- 该包已在构建机器上签名。
- 签名后的包被复制到下载镜像。
- 您下载该包。
HTTPS 确保步骤 4 正确执行。包签名确保步骤 2 至 4 正确执行。
事实上,HTTPS 对于步骤 4 有一个小小的好处:软件包签名仅确保软件包是真实的。步骤 4 中的攻击者可以冒充合法服务器并提供过时的软件包版本。例如,攻击者可以阻止您下载任何安全更新,希望利用您机器上的漏洞,如果没有受到攻击,您本可以修补该漏洞。这不是一个非常现实的情况,因为它需要一个主动攻击者(因此必须是控制您的互联网连接的人),但原则上可能发生。
HTTPS 的另一个好处是,如果您试图隐藏您正在下载 Ubuntu 软件包的事实,以免有人窥探您的网络连接。即便如此,窃听者也可以看到您正在连接到哪个主机;如果您连接到 Ubuntu 镜像并下载数百兆字节,很明显您正在下载 Ubuntu 软件包。窃听者还可以从文件大小中大致确定您正在下载哪些软件包。因此,只有当您从还提供其他类似大小文件的服务器下载时,HTTPS 才有用——除了第三方软件包之外,我认为它没有任何意义,而且只有在非常特殊的情况下才有用。
重申一下:HTTPS 的通常好处是,您知道自己已连接到真实服务器,但在下载 Ubuntu 软件包时,这一点毫无用处。软件包上的签名验证比 HTTPS 提供的保证更可靠。
答案2
对于 APT 来说,通常更重要的不是您的连接是否加密,而是您接收的文件是否被篡改。
APT 具有内置签名验证来确保这一点。
加密可以防止窃听者看到您正在下载的内容,但您实际下载(和请求)的内容却毫无争议:它与成千上万其他 Ubuntu 用户正在下载的内容相同,并且这些文件不包含许多服务器上无法免费获取的内容。不过,如果您需要对正在下载的特定软件包保密,可以使用 HTTPS(在您的 sources.list 中指定)。
APT 内置的签名验证将确保您收到的文件未被篡改。文件来自哪里并不重要,甚至可以在您和服务器之间使用代理或反向代理来减少服务器负载或加快速度。签名验证仍可确保您获取未修改的文件,并与只能通过加密方式生成的签名与原始文件和 Ubuntu 私钥副本相匹配。
如果您切换到 HTTPS,那么您将无法再利用代理服务器来加快访问速度或减少负载。而且它不会增加任何关于 APT 签名验证尚未提供的防篡改保证。然而,这意味着窃听者(例如您的 ISP)将无法看到您正在下载哪些软件包(这不太可能是机密的,正如 Gilles 指出的那样,他们可以从文件大小猜测)。
答案3
我认为这个问题可以用一个对外行人来说有指导性的答案来回答,所以……
在 Ubuntu 19.10 (Eoan)(仍在开发中)的每日构建中,APT 仍然默认不使用 HTTPS。您可以通过检查 /etc/apt/sources.list 文件并注意所有源 URL 都使用“http:”URL 方案来验证这一点。
要将其配置为使用 HTTPS,可以按照以下说明进行操作:
第一的,找到一个值得信赖的支持 HTTPS 的 Ubuntu 官方存档镜像:
- 导航至Ubuntu 官方存档镜像网页。
- 在该网页的表格中,确定符合以下条件的镜像:(A) 托管在您认为值得信赖的网站上;(B) 具有“http:”镜像;(C) 可选地,满足您的地理位置接近度、服务器速度和更新新鲜度偏好。
- 在该网页的表格中,点击步骤(2)中标识的镜像的“http”链接,即可访问该镜像的“http:”版本。
- 在浏览器地址栏中,手动将网页网址中的“http:”更改为“https:”。
- 再次导航到镜像(通过“https:”URL)以查看它是否可以解析。
例如,我认为维基媒体基金会值得信赖,所以我访问了http://mirrors.wikimedia.org/ubuntu/镜像 URL,随后将其更改为https://mirrors.wikimedia.org/ubuntu/,成功解析。
如果您使用 Firefox (67.0.4) 并且无处不在的 HTTPS(2019.6.27) 扩展程序安装时启用了“加密所有符合条件的站点”功能(通过工具栏按钮面板),则可以省略步骤(4)和(5),因为扩展程序将自动修改 URL 以使用 HTTPS,从而允许人们更快地确定“https:”版本的 URL 是否会解析。
二,更新你的 APT 源列表:
- 执行命令
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
来备份您的更新源列表。 - 替换镜像基础 URL — 此处显示为https://mirrors.wikimedia.org
sudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.list
—在镜子的指挥下基本网址然后执行命令。
第三,您应该检查 /etc/apt/sources.list.d/ 目录的内容,查找“http:”源,在从 Ubuntu 档案库之外安装软件后,这些源可能会更改为“https:”。
例如,Microsoft 的 Visual Studio Code 软件包会向此目录添加一个 vscode.list 文件,该文件指定“http:”URL。只需将 URL 方案从“http:”更改为“https:”即可通过 HTTPS 进行更新。
在修改任何此类源文件之前,请考虑备份它们。
最后,执行更新以确保更新能够正常工作:
- 执行
sudo apt-get update
命令。 - 如果这没有按预期工作,请通过执行命令恢复您创建的备份源列表文件
sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list
。
还值得注意的是apt-transport-https为 APT 添加 HTTPS 支持。但是,根据网页,这个包显然是不必要的https://launchpad.net/ubuntu/eoan/+package/apt-transport-https并且根据执行命令后显示的信息,自 APT 1.5 以来就不再需要了apt-cache show apt-transport-https
。
答案4
1.5 号公寓2017 年发布的版本开箱即用地支持 https。不再需要单独安装 apt-transport-https 软件包。
存在多种针对使用 http 存储库的 apt 攻击和漏洞: