从已签名 App 恢复被删除的 iOS 开发证书
从已签名 App 恢复被删除的 iOS 开发证书
适用场景:本机钥匙串中的 Apple Development 证书被误删(security delete-certificate),
但私钥仍然存在,且本机/项目里留有用该证书签名过的产物(.app/.ipa)。
本文从这些签名产物中把证书提取回来,与保留的私钥配对,完整恢复签名身份。
原理:为什么能恢复
iOS 代码签名身份(codesign identity)= 证书(public key 载体)+ 私钥,两者缺一不可:
签名身份 = 证书(.cer,含公钥)+ 私钥(本机钥匙串)- 已签名的 App 中嵌入了签名时的证书链(叶子证书 + 中间证书 + 根证书),
codesign --extract-certificates可将其提取为 DER 格式的证书文件; security delete-certificate只删除证书,默认不删除私钥(除非加-t选项)。
私钥删除后会保留为"孤儿私钥",只是命令行工具(find-key/dump-keychain)
受 ACL 保护往往枚举不到,但 Keychain Access 图形界面可见;- 因此:补回证书文件 → 导入钥匙串 → 自动与保留的私钥配对 → 签名身份完整复原。
为什么不用开发者中心下载:免费个人团队(Personal Team)账号在developer.apple.com没有 "Certificates, IDs & Profiles" 页面(该页面仅付费
开发者计划可访问);Xcode 也不会"打开就自动下载"服务器证书(只在签名构建时按需
创建)。从签名产物提取是免费账号唯一能"原样复原"的途径。

