跳到主要内容

代码签名与证书

问题

iOS 的代码签名机制是什么?Certificate 和 Provisioning Profile 的关系?

答案

签名验证流程

关键组件

组件说明
Certificate包含公钥的数字证书,Apple 签发
Private Key私钥,存在钥匙串中
App IDBundle Identifier + Capabilities
Provisioning Profile组合证书、App ID、设备 UUID
EntitlementsApp 权限声明(推送、Keychain 共享等)

证书类型

类型用途
Development调试用,绑定设备
DistributionApp Store 发布
Enterprise企业内部分发
Ad Hoc有限设备测试(100 台)

Automatic Signing

Xcode → Signing & Capabilities → 勾选 "Automatically manage signing",Xcode 自动处理证书和 Profile 的创建与更新。


常见面试问题

Q1: 为什么换电脑后打包失败?

答案:私钥存在本机钥匙串中。新电脑没有私钥,无法用证书签名。解决方案:

  1. 从原电脑导出 .p12 文件(包含私钥+证书)
  2. 或在 Apple Developer 重新创建证书

Q2: Provisioning Profile 过期怎么办?

答案:Xcode 自动签名模式下会自动更新。手动签名需要到 Apple Developer 后台重新生成 Profile 并下载安装。

相关链接