Seth Michael Larson:记录 Python 生态系统中证书分发的痛点
eMudhra CA 漏洞事件凸显了 Python 生态系统在处理证书颁发机构(CA)时的系统性问题。CPython 依赖 OpenSSL,而 OpenSSL 需要 CA 根证书;对于缺乏原生支持的操作系统,Python 通过 certifi 包捆绑这些证书。历史上 certifi 至关重要,但如今 Linux 发行版已提供自身管理更完善的证书存储库。一个显著问题是:基于 OpenSSL 的 Python 安装中缺乏默认的、活跃的证书吊销机制。将 certifi 作为依赖项进行升级,会引发整个 Python 和 pip 生态系统的级联更新。由于 pip 捆绑了 certifi,因此一次妥协可能迫使 pip 和 Python 本身进行紧急更新。随后,Python 安全响应团队必须在多个 Python 分支间协调发布。pip 正逐步转向默认使用 truststore,这将减少其对 certifi 的依赖,尤其是针对 Linux 用户。此次事件促使众多其他打包工具和基础设施组件迅速采取行动。在补丁应用后提醒用户升级依赖项,仍是一个主要挑战。作者建议,鉴于大多数平台现已提供充足的 CA 捆绑包,PyPI 应停止作为证书分发渠道。提议转向更依赖系统提供的证书存储库,以减轻 Python 和 pip 维护者的负担。基于 OpenSSL 的系统如何实现有效的证书吊销,仍是亟待解决的关键问题,以减少对志愿者的持续压力。