如何在apt-get中使用https?

apt-get使用https或任何类型的加密吗? 有没有办法配置它来使用它?

apt-get (和其他包操作命令,它们是相同APT库的前端)可以使用HTTP,HTTPS和FTP(以及挂载的文件系统)。 如果在/etc/apt/sources.list/etc/apt/sources.list.d/*指定https:// URL,则APT将使用HTTPS。

APTvalidation包的签名。 因此,您不需要提供一种提供数据身份validation的传输方式。 如果攻击者修改了您正在下载的文件,则会注意到这一点。 使用签名validation比使用HTTPS连接更好,因为它会检测您正在下载的服务器上的攻击,而不仅仅是传输中的攻击。

更准确地说,包的(简化)数据流如下:

  1. 该包在构建机器上生成。
  2. 该包在构建机器上签名。
  3. 已签名的包将复制到下载镜像。
  4. 你下载包。

HTTPS确保第4步正确发生。 包签名可确保正确执行步骤2到4。

事实上,步骤4的HTTPS有一个小好处:包签名只能确保包是真实的。 步骤4中的攻击者可以冒充合法服务器并提供该软件包的陈旧版本。 例如,攻击者可能会阻止您下载任何安全更新,希望利用您的计算机上的漏洞(如果不是用于攻击)。 这不是一个非常现实的情况,因为它需要一个主动攻击者(因此必须是控制您的Internet连接的人),但它原则上可能发生。

HTTPS的另一个好处是,如果你试图隐藏你从网络连接上的某个人那里下载Ubuntu软件包的事实。 即便如此,窃听者也能看到你正在连接的主人; 如果您连接到Ubuntu镜像并下载数百兆字节,很明显您正在下载Ubuntu软件包。 窃听者也可能主要从文件的大小中找出你正在下载的软件包。 因此,只有当您从同样提供类似大小的其他文件的服务器下载时,HTTPS才有用 – 除了第三方软件包之外,我没有看到任何意义,只有在非常特殊的情况下。

重申一下:当你下载Ubuntu软件包时,HTTPS的常见好处就是你知道你已经连接到真实服务器了。 包装上的签名validation提供了比HTTPS可提供的更强大的保证。

对于APT,通常更重要的不是您的连接是加密的,而是您接收的文件未被篡改。

APT内置签名validation以确保这一点。

加密可以防止窃听者看到你正在下载的内容,但你实际下载(和请求)的内容是非常有争议的:它将与成千上万的其他Ubuntu用户正在下载并且文件中没有包含任何内容的内容相同在许多服务器上免费提供。 尽管如此,如果您需要隐私,了解您正在下载哪些软件包,可以使用HTTPS(在sources.list中指定)。

内置于APT的签名validation将确保您收到的文件未被篡改。 文件来自哪里并不重要,甚至可以在您和服务器之间使用代理或反向代理来减少服务器负载或加快速度。 签名validation仍然确保您获得未修改的文件,匹配只能通过加密方式生成的签名与原始文件和Ubuntu私钥的副本。

如果切换到HTTPS,那么您将无法利用代理服务器来加速访问或减少负载。 并且它不会再增加对APT签名validation尚未给出的非篡改的保证。 但是,这意味着窃听者(例如您的ISP)将无法看到您正在下载哪些软件包(这可能不是保密的,而Gilles指出他们可以从文件大小中猜出)。