跳到主要内容

iOS 证书过期或被吊销会怎样?证书过期对上架 App 的影响

iOS 证书过期或吊销不影响已上架的 App,前提是开发者会员资格有效;受影响的是新构建上传、Ad Hoc 包和开发包,以及推送。真正会导致下架的是会员资格过期。本文附影响总表、续期步骤和到期提醒做法。

iOS 证书过期或被吊销,对已经上架 App Store 的版本没有影响,前提是你的开发者计划会员资格仍然有效,这是 Apple 官方文档的原话。受影响的是之后的事:不能再用这张证书上传新构建;用它签名的开发包、Ad Hoc 包会因描述文件失效而无法使用;推送证书过期则服务器发不出推送。真正会让上架 App 下架的是会员资格过期。处理办法是申请新证书、重新生成描述文件后重新构建。Apple 规则截至 2026 年 10 月。

iOS 证书过期和被吊销有什么不同?

过期 吊销
怎么发生 到了证书的到期日,自动失效 有人在后台 Certificates 页点了 Revoke,或 Apple 吊销
能否预见 能,到期日写在证书和描述文件里 通常不能,可能是同事操作
对描述文件 描述文件同样有到期日,到期后要重新生成 Apple 写明:包含被吊销证书的描述文件立即失效
对已上传的构建 Apple 文档没有写会受影响 已上传但还没提交审核的构建,可能被标为无效二进制
处理 申请新证书,重新生成描述文件 同左,并查清是谁、为什么吊销

谁能吊销哪类证书,Apple 的吊销权限说明写明:机构团队的成员都能吊销自己的开发证书,发布证书只有账号持有人(Account Holder)或管理员(Admin)能吊销。个人账号的持有人可以吊销所有类型。

证书不能延长有效期,「续期」就是申请一张新证书,再把描述文件换成新证书。

证书过期对已上架 App、TestFlight 和推送有什么影响?

App Store 上已上架的 App

Apple 的证书概览对 iOS Distribution(App Store)证书写明:只要 Apple Developer Program 会员资格有效,App Store 上已有的 App 不受影响;但不能再把用过期或吊销证书签名的新 App 或更新上传到 App Store Connect;已上传到 App Store Connect、还没提交审核的构建,如果是用被吊销的证书签名的,可能被标为 Invalid Binary(无效二进制)。

所以用户手机上从 App Store 下载的 App 照常能用、能更新,你要做的是换新证书后再出下一个构建。

TestFlight 构建

TestFlight 构建是经 App Store Connect 上传的,适用上面同一条规则:证书过期或吊销后,不能再用它签名的包上传新构建;用被吊销证书签名、尚未提交审核的构建可能被标为无效。Apple 的 TestFlight 概览写明,每个构建最多可测试 90 天,到期后测试员就不能再用,这和证书无关。

证书出问题后,换新证书重新构建、加大构建号上传一个新构建,再分发给测试员,是最稳妥的做法。构建号怎么加见 iOS 版本号和构建号怎么填。

Ad Hoc 包和开发包

这两类包装在登记过 UDID 的手机上,靠包里的描述文件授权运行,受影响最直接。

  • 证书被吊销:Apple 的吊销证书帮助页写明,包含被吊销证书的描述文件会失效。已经装在手机上的包会打不开,新装也会失败。
  • 证书或描述文件过期:Apple 的编辑描述文件帮助页写明,描述文件过期后要重新生成,并用新描述文件重新签名 App。实际表现是到期后已装的包打不开,安装时报 0xe8008015 一类签名校验错误。
  • 首次启动要联网:Apple 的描述文件更新说明写明,2021 年 6 月 6 日之后创建的会员,开发和 Ad Hoc 签名的 App 首次启动时要联网校验签名证书,连不上可能无法启动。

这类包不能「续命」,只能用新证书和新描述文件重新构建,再重新安装到每台手机。

推送证书

Apple 的证书概览对 Apple Push Notification service 证书写明:证书过期或吊销后,你不能再向 App 发送推送。App 本身照常运行,只是收不到推送。

用 APNs 认证密钥(.p8)的不受这个问题困扰。Apple 的用认证令牌与 APNs 通信帮助页写明,签名密钥不会过期,但可以被吊销。还在用推送证书的,可以趁这次续期改用 .p8 密钥,做法见给 iOS App 加推送通知。

企业 In-House 证书

只用于 Apple Developer Enterprise Program 的内部 App。Apple 写明,这类证书过期或吊销后,用户就不能再运行用它签名的 App,必须用新证书签名的新版本替换。普通开发者计划账号不涉及这一项。

开发者计划会员过期

会员过期的影响比证书大得多。Apple 的访问问题说明写明:会员过期后,你在 App Store 上的 App 和 App 内购买项目会在所有国家和地区的商店下架,已经装在用户设备上的 App 仍保留。

同时,会员过期后不能使用 Certificates, Identifiers & Profiles、TestFlight、App Store Connect 里的 App 与分析、App Store Connect API 等功能。要恢复,需要账号持有人续费。

Apple 的设备管理说明还写明,不续费的话,注册的测试设备会在会员到期 180 天后被全部移除。

哪种情况影响哪类 App?

发生了什么 App Store 已上架 App TestFlight Ad Hoc 包、开发包 推送
开发证书过期 不影响 不影响 用它签的开发包失效 不影响
开发证书被吊销 不影响 不影响 相关描述文件立即失效,开发包打不开 不影响
发布证书过期 不影响(会员有效时) 不能再用它上传新构建 用它签的 Ad Hoc 包失效 不影响
发布证书被吊销 不影响(会员有效时) 不能上传新构建,未提交审核的构建可能被标为无效 相关描述文件立即失效,Ad Hoc 包打不开 不影响
推送证书过期或被吊销 App 能用,收不到推送 收不到推送 收不到推送 服务器发送失败
描述文件过期 不影响 不影响 用它签的包打不开,要重新生成并重新签名 —
会员过期 所有商店下架,已装的保留 无法使用 无法新建证书和描述文件 —

表中「不影响」指的是对这一列的对象本身没有影响,下一次构建仍然要用有效的证书。

证书过期后怎么续期?

证书快到期或已经失效时,按下面的顺序处理。完整的 CSR、.p12 生成命令见在 Windows 上申请 iOS 开发证书、描述文件和 p12。

  1. 新建证书。生成 CSR(可以沿用原来的私钥),在 Certificates, Identifiers & Profiles 的 Certificates 页点加号,选同一类型,上传 CSR,下载 .cer。发布证书要由账号持有人或管理员创建。
  2. 导出 .p12。把新 .cer 和私钥合成 .p12,设好导出密码。
  3. 重新生成描述文件。到 Profiles 页,逐个编辑用到旧证书的描述文件,改选新证书,保存并下载。主 App 和每个扩展的描述文件都要处理,Development、Ad Hoc、App Store Connect 各一份的都要换。
  4. 替换 keychain 目录里的文件。在 Windows、Linux 上用 KXBuild 的,把新的 .p12 和 .mobileprovision 放进 工程目录/keychain/ 或 KXBUILD_HOME/keychain/,删掉旧文件,并更新 password.properties 里的「文件名=密码」,规则见证书与签名。
  5. 重新构建。开发包和 Ad Hoc 包重新构建、重新安装到手机;要上架的加大构建号后重新构建上传。
1kxbuild build .\MyApp.xcodeproj --install
2kxbuild build .\MyApp.xcodeproj -c Release --export app-store

旧文件不删,目录里同时有新旧两份时容易用错,排错也更难。描述文件里证书对不上时的报错和处理,见 iOS 签名报错与 ipa 安装失败。

怎么提前避免证书过期出问题?

查看到期时间

证书的到期日可以在后台 Certificates 页看到,也可以直接查本地的 .p12。下面用 Git for Windows 自带的 OpenSSL,执行时会要求输入 .p12 的密码。

1$openssl = "C:\Program Files\Git\mingw64\bin\openssl.exe"
2& $openssl pkcs12 -in .\keychain\distribution.p12 -nokeys -clcerts | & $openssl x509 -noout -subject -enddate

输出里的 notAfter= 就是到期时间。描述文件的到期时间用下面的命令解出后,看 ExpirationDate 字段。

1& $openssl smime -inform DER -verify -noverify -in .\keychain\MyApp_AppStore.mobileprovision -out profile.plist

设到期提醒

  • 把每张证书、每个描述文件的到期日记进团队日历,提前一个月提醒。
  • CI 里可以加一步,用上面的命令检查 notAfter,离到期不足 30 天时让流水线报警告。
  • Ad Hoc 测试包发出去之前,确认描述文件离到期还有足够时间,避免测试中途失效。
  • 开发者计划会员的续费日期在 Account 页的 Membership details 里,同样记进日历。

团队共用证书的注意事项

  • 发布证书团队共用一张。发布证书属于团队,一个人申请、导出 .p12 后分发给需要出包的同事和构建机,不要每人申请一张。
  • 不要随手吊销。吊销发布证书会让所有人手上相关的描述文件同时失效,正在测试的 Ad Hoc 包也会打不开。吊销前先在团队里确认没有人还在用它。
  • 新证书生效前不要删旧证书。旧证书还没过期时,可以先申请新证书、换好描述文件,确认新包能正常构建上传,再让旧证书自然过期。
  • 妥善备份 .p12 和密码。存进密码管理器或加密的团队共享盘,不要提交到代码仓库。丢了私钥只能重新申请。
  • 离职交接。持有发布证书私钥的同事离职时,评估是否需要换新证书,并更新 CI 里保存的证书和密码,避免 iOS 证书过期或被吊销后流水线出不了包。

常见问题

发布证书过期了,App Store 上的 App 会下架吗?

不会。Apple 写明只要开发者计划会员资格有效,App Store 上已有的 App 不受证书过期或吊销影响。只是不能再用这张证书上传新构建,要先申请新证书。

证书吊销后 TestFlight 里的构建还能测吗?

Apple 写明,用被吊销证书签名、已上传但还没提交审核的构建可能被标为无效二进制。稳妥的做法是用新证书重新构建,加大构建号上传新构建再分发给测试员。

Ad Hoc 包突然所有人都打不开了怎么办?

多半是发布证书被吊销或描述文件过期。到后台确认证书状态,申请新证书、重新生成 Ad Hoc 描述文件,重新构建后让测试人员重新安装。

推送证书过期了怎么办?

推送证书过期后服务器发不出推送,App 本身照常运行。申请一张新的推送证书更新到服务器,或者改用 APNs 认证密钥(.p8),Apple 写明这类密钥不会过期。

开发者账号不续费会怎样?

会员过期后,App Store 上的 App 和 App 内购买项目会在所有商店下架,已装在用户设备上的保留。同时不能使用 TestFlight 和证书管理,续费后由账号持有人恢复。