上个月帮朋友处理一个 iOS 上架的事,对方的开发机器是 Windows,Apple ID 发过来,第一句话是「证书怎么弄」。我远程连过去看了一眼,桌面上连 Xcode 的影子都没有。为了生成一个证书专门配一台 Mac,实在有点折腾啊。后来用 Appuploader 在 Windows 上把开发证书和发布证书都建了出来,前后没花多少时间。

这篇就把创建 iOS 证书这件事拆开讲:先弄清证书和描述文件的关系,再决定建哪一种,再看几个常见的坑。没有 Mac 也能跟着走,前提是开发者账号得是真的。

一、先分清:证书、私钥、描述文件是什么关系

很多人第一次建证书,以为建完就能打包上架了。其实证书只是一半。

iOS 证书的核心是一对密钥:公钥证书和私钥。导出成文件,就是我们说的 .p12。苹果后台认的是这对密钥,不是某个账号。

描述文件(Provisioning Profile)是另一份东西。它把证书、Bundle ID 和测试设备绑在一起,决定这个 App 能不能装、能装在哪些设备上。所以:

  • 证书可以对应多个 App,一个证书给几个项目用没问题;
  • 描述文件和应用基本是一对一,换个 App 就得换一份;
  • 只有证书没有描述文件,打包那一步照样会卡住。

还有一种容易混的:推送证书。它是给服务器连 APNs 用的,不参与打包签名。别把它当成发布证书。

二、创建之前先确定三件事

第一件,开发证书还是发布证书。

开发证书用来把 App 装到真机上调试,描述文件里要勾选测试设备;发布证书用来打包上传 App Store。界面上可能写成 iOS App Development、Apple Development、iOS Distribution 这些名字,认准用途就行嘛。

第二件,免费账号还是付费账号。

免费账号也能建证书,但有效期只有 7 天,也不能上传 App Store。拿来临时跑个真机可以,正经上架还是得用付费的开发者账号。

第三件,要不要开证书同步。

勾上「使用 AppUploader 服务同步证书」之后,换一台电脑登录同一个账号就能把证书下载下来,不用手动拷文件。团队里几个人轮着打包,这个选项能省不少事。不勾也行,代价是每台机器都得自己导入一遍 .p12。

三、在 Appuploader 里创建:按顺序点

打开工具,进入「证书管理」,点「添加」,剩下的就是填表。

  1. 选证书类型:开发还是发布。
  2. 填证书名称。用自己能认出来的命名,比如「公司名-开发-2026」,以后证书多了不至于抓瞎。
  3. 填邮箱和密码。这里的密码是 P12 文件密码,不是 Apple ID 密码,两码事。
  4. 需要跨电脑用就勾上同步。
  5. 生成,拿到 .p12 文件。

密码这一项得多说一句。它没有找回入口,忘了就只能重新生成一张证书,之前的签名也跟着作废。我一般建完就顺手记进密码管理器(别问我是怎么养成这个习惯的)。

生成之后别急着关窗口,在证书列表里核对一下类型和到期时间。免费账号那 7 天的有效期,这里看得最清楚。

四、证书建完,还要配描述文件

回到主界面进「描述文件管理」,新建一份,选类型、选 Bundle ID、填名称。

  • 上架用 App Store 类型;
  • 真机调试用 Development 类型,并且把测试设备勾上;
  • 推送类型不需要描述文件。

没有合适的 Bundle ID,就在这一步顺手新建一个。设备没加进去的话,装到手机上会失败,得回来更新描述文件、重新打包。

描述文件页面提示「证书为空」,原因基本就三个:还没建证书、证书类型和描述文件类型对不上,或者这是推送类型本来就不需要描述文件。按这三条对一遍,比在后台乱翻快得多。

建完点下载,把 .mobileprovision 和之前那张 .p12 一起收好。打包工具要的是这两样,缺一个都不行呢。

五、几个常问的

P12 密码忘了还能找回吗? 找不回,也改不了。只能重新生成证书,然后重新打包。

提示证书名额满了怎么办? 开发证书最多 2 个,发布证书最多 3 个,按苹果后台的规则来。先把确实不用的旧证书删掉再建。删开发证书会让正在测试的 App 打不开,已上架的 App 不受影响,这一点得分清楚。

免费账号建的证书能上架吗? 不能,只有 7 天有效期。测试够用,上架不行啊。

一个证书能给多个 App 用吗? 能。证书不跟 App 绑定,描述文件才跟 Bundle ID 绑定。

换了电脑怎么接着用? 开了同步就直接下载;没开就把 .p12 和描述文件导过去,再装一遍。

推送证书能拿来打包吗? 不能。推送证书是服务器和 APNs 之间用的,和签名打包是两条线。

六、和 Mac 上那套做法比一比

Xcode 的自动签名是最省心的:登录账号,勾一下 Automatically manage signing,证书和描述文件都由 Xcode 管。前提是你得有一台 Mac,日常也在 Xcode 里开发。

钥匙串访问加开发者后台是手动那条路:在本机生成 CSR,上传到苹果后台换证书,再导出 .p12。控制力最强,步骤也最多,同样离不开 Mac。

Fastlane 的 match 适合团队:把证书和描述文件放在一个加密仓库里,CI 和本地共用一套。配好之后很顺,但初始配置要花点时间,运行环境一般也还是 Mac 或者 Mac 构建机。

Appuploader 走的是另一条路:在 Windows、Linux、Mac 上都能建,不用钥匙串,输入名称、邮箱和密码就能生成,还能把证书同步到别的电脑。外包、跨平台团队、临时接手别人项目的场景,用它比较顺手吧。要说什么它不覆盖,那就是它管的是证书和描述文件这一段,打包本身还得靠你手里的构建工具。

创建 iOS 证书这条链路,说穿了就是三步:先定类型,再建证书,然后配一份描述文件。类型选错、密码丢了、描述文件没跟上,是新手最容易卡住的三个地方。

真要上手,按这个顺序走一遍:确认账号能用 → 建开发证书 → 建 Development 描述文件 → 装到真机验证 → 再建发布证书和 App Store 描述文件。前面那套跑通了,后面上架就是重复一遍的事。