我使用了许多通过 ppas 获得的软件包。我花了一些时间尝试用 https 替换它们的 http URL,但无济于事。为什么 ppa.launchpad.net 没有证书?这是否意味着每个人都会受到中间人攻击?
我看到这个帖子里讨论了这个问题: 通过 ftp 或 https 从 ppa.launchpad.net 下载软件包
但它已经有近 10 年的历史了,而且它实际上并没有解释为什么没有 https。这难道不是只需要为 ppa.launchpad.net 放入证书吗?
答案1
Launchpad 现支持 HTTPS(2022)
Launchpad 终于推出了对通过 HTTPS 提供 PPA 的支持!
因此,您现在可以查找并替换任何引用旧域的 apt sources.list 文件:
- http://ppa.launchpad.net/→https://ppa.launchpadcontent.net/
- https://private-ppa.launchpad.net/→https://private-ppa.launchpadcontent.net/
这对于隐私而言是一个很大的进步,因为窃听者再也无法看到您访问了哪些 PPA 或下载了哪些软件包/操作系统版本。
使用 HTTPS 提供传输层安全性还可以增加纵深防御,以防在 GnuPG 或 apt 包签名机制中发现漏洞。这种情况在过去几年中已经发生过几次,所以这是一个很大的改进。
https://bugs.launchpad.net/launchpad/+bug/1473091
还有另一张票(截至 2022-02-07 仍然开放)用于add-apt-repository
默认更改为首选 HTTPS。
https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1959015
答案2
由于您从 launchpad 下载的软件包都经过加密签名,就像其他所有 Debian 存储库一样,因此中间人攻击实际上并不可行。apt
检查下载文件的签名.deb
,任何篡改都会导致签名无效。无效签名会在安装前导致错误。所以从安全角度来看,我认为这不是一个大问题。
有人可能会说这侵犯了隐私,因为任何监听连接的人都可以看到你正在安装哪些软件。因此,HTTPS 连接确实是更好的选择。
至于你最后一个问题,如果他们不能只添加证书就完事了,我们都不知道 ppa.launchpad.net 背后的基础设施是如何工作的。对于单个服务器来说,事情通常就这么简单。但我怀疑我们谈论的是不是单个简单的服务器。基础设施可能比这更复杂,因此设置可能更复杂。还需要考虑服务器负载问题,因为加密所有传出流量需要比仅仅传送流量更多的 CPU 周期。根据他们收到的流量量,这可能会导致服务器负载过大,而他们可能不想处理。但请记住,这只是我的猜测,原因可能完全不同。
答案3
为什么 ppa.launchpad.net 没有证书?
查看启动板错误 1473091:默认 PPA 为 HTTPS
William Grant (wgrant) 于 2015-07-10 回复:
由于域名上提供任意内容,因此这并非易事。我们最好将其完全从 ppa.launchpad.net 中移除。
Colin Watson (cjwatson) 于 2017-03-27 回复:
这需要决定并获取一个不在 launchpad.net 下的合适域(例如,比较 launchpadlibrarian.net,它的存在原因相同),因为否则,ppa.launchpad.net 上用户提供的内容发起的 XSS 攻击将能够从其 launchpad.net 超级域中窃取 cookie。我们目前通过 Secure 属性保存了安全属性,但如果 ppa.launchpad.net 通过 HTTPS 提供服务,这将变得无效。当然,这需要重新配置各种东西以指向它,我预计会有相当多的杂项后果;这种任务需要花费大量时间进行调试。
Colin Watson(cjwatson)于2020-02-03阐述:
Launchpad 需要将其会话 cookie 的域设置为“.launchpad.net”,以便其他虚拟主机(code.launchpad.net、bugs.launchpad.net 等)可以看到它们,但这也会导致 launchpad.net 的所有其他子域都可以看到它们。我们还在这些 cookie 上设置了“安全”标志,这可以确保浏览器至少只通过 HTTPS 发送它们,从而缓解这种情况。但是,如果 ppa.launchpad.net 可以通过 HTTPS 访问,那么那里的任何页面都能够窃取您的会话 cookie。虽然我目前不知道如何让 ppa.launchpad.net 提供 Content-Type: text/html 的任意内容,但它是一项托管大量用户生成文件的服务,构造会混淆浏览器的滥用行为并不需要那么多。我们需要在安全使用 HTTPS 之前将其移动。
Colin Watson (cjwatson) 于 2021-09-28 开始采取行动解决该错误:
我已经提交https://portal.admin.canonical.com/C133313(仅内部链接)要求我们的系统管理员注册另一个域名,以便我们可以开始取得进展。
2021-09-30:
有问题的备用域名已被注册,并且我已提交https://portal.admin.canonical.com/C133345(再次,仅限内部链接)在相关主机上进行配置。
答案4
对于那些到达这里并希望根据上述解决方案快速解决问题的人来说:
- PPA 源现在支持 HTTPS!但你也必须更改主机名
- 编辑目录 /etc/apt/sources.list.d/ 中列出的 PPA 源
- 更改基本 URLhttp://ppa.launchpad.net/ 到https://ppa.launchpadcontent.net/
- 跑步
apt update