eMudhra证书颁发机构被攻破:对TeamCity意味着什么

eMudhra证书颁发机构被攻破:对TeamCity意味着什么

💡 原文英文,约2800词,阅读约需10分钟。
📝

内容提要

2026年10月,eMudhra八个中间CA私钥被曝可从公开数据恢复,属行业性证书事件,并非TeamCity自身漏洞,但TeamCity依赖的Java信任库可能仍信任这些证书。建议升级至2026.2.2或2026.1.6,更新服务器与代理的Java运行时,重新部署Docker镜像,检查并删除上传的受影响证书,更新CLI至1.6.1,并审查操作系统、构建工具等独立信任库。

🔎

延伸解读

为何升级TeamCity不等于修复证书问题

文章明确指出,升级到2026.2.2或2026.1.6主要带来健康报告和产品改进,但升级TeamCity并不总会更新其使用的Java运行时。服务器和代理仍可能继续信任被攻破的eMudhra证书。因此,必须单独检查并更新每个节点和代理的Java运行时,包括通过javax.net.ssl.trustStore设置的自定义信任库。

健康报告的覆盖盲区:构建代理

新版本的健康报告只检查TeamCity服务器节点,不会检查构建代理。这意味着即使服务器显示正常,代理仍可能信任受损证书。文章建议手动检查代理的Java运行时和<agent home>/conf/trustedCertificates目录下的证书文件,并删除受影响的证书。TeamCity Cloud用户也需自行审查自托管代理。

手动清理信任库的风险提示

如果无法升级Java,文章提供了手动删除受影响根证书的命令,但特别警告:移除AAA Certificate Services可能破坏未受影响的服务,操作前应测试依赖连接并备份信任库。此外,手动删除只针对当前信任库,不会检查blocked.certs文件,因此需确认操作范围,避免误删导致其他集成中断。

容易被忽略的独立组件:CLI与第三方工具

TeamCity CLI是独立的Go应用,1.6.1之前版本受影响的Go发布构建,需运行teamcity update更新。此外,操作系统、Git、Python的certifi、Node.js等工具各有独立信任库,升级TeamCity服务器不会自动更新它们。文章建议逐一审查这些组件,并替换VCS主机、包仓库等服务中使用的eMudhra证书。

❓

Q&A

eMudhra证书颁发机构被攻破是怎么回事?

2026年10月17日,eMudhra运营的八个中间CA(六个用于TLS,两个用于代码签名)的私钥被曝存在弱点,可从公开数据中恢复。eMudhra表示这些中间CA未签发终端实体证书,且未发现私钥在披露前被恢复或利用的证据。这是一个行业性的证书颁发机构事件,并非TeamCity特有的漏洞。

TeamCity本身存在这个漏洞吗?

不存在。该问题不是TeamCity自身的漏洞。但TeamCity依赖的Java运行时等组件的信任库可能仍然信任这些被攻破的证书。从2026.2.2和2026.1.6版本开始,TeamCity会在安装仍信任受影响证书时显示健康报告并提供修复步骤。

我需要升级TeamCity吗?推荐哪个版本?

推荐升级到2026.2.2或2026.1.6版本。这些版本增加了健康报告、其他产品改进并修复了其他漏洞。但升级TeamCity不一定更新Java,因此仍需单独检查Java运行时。如果暂时无法升级,可按照文章中的手动缓解措施操作。

如何检查我的Java信任库是否还信任被攻破的eMudhra证书?

文章提供了可选的信任库验证脚本(Linux/macOS用Bash或zsh,Windows用PowerShell)。脚本使用keytool列出信任库内容,并通过指纹或别名匹配被攻破的证书。如果找到,会输出“ACTION REQUIRED”并列出受影响的别名;否则输出“OK”。注意结果仅适用于所选信任库,且不检查blocked.certs。

TeamCity Cloud用户需要做什么?

TeamCity Cloud已由JetBrains更新,但客户仍需检查:1)自托管构建代理(使用TeamCity Agents),需手动检查和修复;2)上传到TeamCity的证书,需通过健康报告或手动检查并移除受影响的证书。

健康报告会检查构建代理吗?

不会。健康报告仅检查服务器节点,不检查构建代理。构建代理需要手动检查和修复,具体步骤见文章“TeamCity Agents”部分。

TeamCity CLI需要更新吗?如何更新?

需要。TeamCity CLI是Go应用程序,1.6.1之前的版本使用了受影响的Go版本构建。1.6.1版本(2026年10月26日)使用Go 1.27.3重新构建,包含了修复。在每台使用CLI的机器上(包括构建代理)运行`teamcity update`,并用`teamcity --version`确认版本。

除了升级TeamCity和Java,还需要审查哪些组件?

还需要独立审查和更新以下组件:操作系统和构建工具(如OS信任库、其他Java运行时、Git和MinGit、Python的certifi、Node.js等);自定义镜像(更新内部OS和工具并重建);连接的服务(如VCS主机、包注册表等使用的eMudhra证书,通过eMudhra的迁移流程替换)。

🏷️

标签

➡️

继续阅读