公开预览 · 注册及正式收款尚未开放。
Anti-AIClonePILOT

日志日期 · 周四

Apple:旧 Developer ID 中间 CA 2027 年 2 月到期

2026-10-01,Apple 提醒旧 Developer ID 中间 CA 将于 2027-02-01 到期,受影响证书签名的 .pkg 届时无法安装。

当天发生了什么

2026-10-01,Apple Developer News 发布公告“Upcoming expiration of Developer ID Certification Authority (Sub-CA)”(日期为 Apple 页面所示)。公告称:最初的 Developer ID 中间证书颁发机构将于 2027 年 2 月 1 日到期,由它签发的证书届时停止工作。Apple 建议在 Certificates, Identifiers & Profiles 中查找到期日不晚于该日的证书,并从当前的 Developer ID Certification Authority (G2) 生成替换证书;G2 有效至 2031 年,但其签发的证书每年到期、需逐年续签。使用 Xcode 11.4 或更早版本者应先升级,申请时选择 G2 Sub-CA。分发方面,自该日起用受影响证书签名的 .pkg 将无法安装,需提前重签;此前已签名、已公证且带安全时间戳的 Mac 软件可继续运行,后续更新应使用新证书并附带安全时间戳。

对防护模型意味着什么

对做过混淆或加固的 Mac 应用,签名通常是流水线最后一步,证书轮换容易被当成行政事务,但它会影响几处工程边界。其一,若构建脚本按证书指纹或固定身份名选择签名身份,换证后必须同步修改。其二,如果应用自带签名完整性自检,并写死了旧证书指纹,换到 G2 新证书后,合法更新可能被自身逻辑误判;以团队标识和指定要求为准的检查通常更稳妥,但需实测确认。其三,.pkg 与已公证应用结论不同,仍在提供旧安装包下载的团队要单独处理。还要诚实看待边界:签名证明来源与完整性,不提供保密性,换证不会让二进制更难被分析。

在自己的构建上做的检查

建议按顺序排查自己的产物。先用 codesign -dvvv 或 pkgutil --check-signature 查看已发布产物的证书链,确认中间 CA 是旧 Developer ID CA 还是 G2,并记录叶证书到期日。再在构建脚本、notarytool 配置和 CI 密钥库中搜索引用证书指纹或身份名的位置。若应用自带签名自检,确认它依赖的是团队标识与指定要求,而非写死的指纹。随后用新证书完整重跑“加固、签名、公证、装订、安装”,在干净机器上验证 Gatekeeper 结果,并对加固后的版本做一轮功能回归。最后为 G2 证书的年度续签设置提醒。

行动清单

  • 用 codesign / pkgutil 确认已发布产物是否链接到旧 Developer ID CA
  • 检查应用自带的签名自检是否写死旧证书指纹
  • 用 G2 证书重跑签名、公证与安装验证,并重签仍在分发的 .pkg

原始资料

全部原始资料与转载状态 ↗