當前位置: 首頁>>技術教程>>正文


如何在apt-get中使用https?

, , , , ,

問題描述

apt-get是否使用https或任何類型的加密?有沒有辦法配置它來使用它?

最佳解決方案

apt-get(和其他包處理命令,它們是相同APT庫的front-end)可以使用HTTP,HTTPS和FTP(以及掛載的文件係統)。如果在/etc/apt/sources.list/etc/apt/sources.list.d/*中指定https:// URL,則APT將使用HTTPS。

APT驗證包的簽名。因此,您無需使用提供數據身份驗證的傳輸方式。如果攻擊者修改了您正在下載的文件,則會注意到這一點。使用簽名驗證比使用HTTPS連接更好,因為它會檢測您正在下載的服務器上的攻擊,而不僅僅是傳輸中的攻擊。

更確切地說,包的(簡化)數據流如下:

  1. 該包在構建機器上生成。

  2. 該包在構建機器上簽名。

  3. 已簽名的包將複製到下載鏡像。

  4. 你下載包。

HTTPS確保第4步正確發生。包簽名可確保正確執行步驟2到4。

事實上,步驟4的HTTPS有一個小優點:包簽名隻能確保包是真實的。步驟4中的攻擊者可以冒充合法服務器並提供該軟件包的陳舊版本。例如,攻擊者可能會阻止您下載任何安全更新,希望利用您的計算機上的漏洞(如果不是用於攻擊)。這不是一個非常現實的場景,因為它需要一個主動攻擊者(所以必須是控製你的Internet連接的人),但它原則上可能發生。

HTTPS的另一個好處是,如果你試圖隱藏你從網絡連接上的某個人那裏下載Ubuntu軟件包的事實。即便如此,竊聽者也能看到你所連接的主人;如果您連接到Ubuntu鏡像並下載數百兆字節,很明顯您正在下載Ubuntu軟件包。竊聽者還可以從文件大小中找出你正在下載的軟件包。因此,隻有當您從同樣提供類似大小的其他文件的服務器下載時,HTTPS才有用 – 除了third-party軟件包之外,我沒有看到任何意義,隻有在非常特殊的情況下才會這樣。

重申一下:當您下載Ubuntu軟件包時,HTTPS的常見好處就是您知道自己已連接到真實服務器,這樣做是沒用的。軟件包上的簽名驗證比HTTPS提供的功能更強大。

次佳解決方案

對於APT,通常更重要的不是您的連接是加密的,而是您收到的文件未被篡改。

APT具有內置簽名驗證以確保這一點。

加密可以防止竊聽者看到你正在下載的內容,但你實際下載(和請求)的內容是非常有爭議的:它將與成千上萬的其他Ubuntu用戶正在下載並且文件中沒有包含任何內容的內容相同在許多服務器上免費提供。盡管如此,如果您需要隱私,特別是您正在下載的軟件包,可以使用HTTPS(在sources.list中指定)。

內置於APT的簽名驗證將確保您收到的文件未被篡改。文件來自何處並不重要,甚至可以在您和服務器之間使用代理或反向代理來減少服務器負載或加快速度。簽名驗證仍然確保您獲得未修改的文件,匹配隻能通過加密方式生成的簽名與原始文件和Ubuntu私鑰的副本。

如果切換到HTTPS,那麽您將無法利用代理服務器來加速訪問或減少負載。並且它不會再增加對APT簽名驗證尚未給出的non-tampering的保證。但是,這意味著竊聽者(例如您的ISP)將無法看到您正在下載哪些軟件包(這可能不是保密的,而Gilles指出他們可以從文件大小中猜出)。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/1991.html,未經允許,請勿轉載。