P12 证书是什么?个人签名为什么都用它

做个人签名,绕不开一个文件:P12。客户交包过来要签名,我们说的”用证书签”,实际用的就是这个东西。它到底是什么,为什么这么关键,一次讲清楚。

它是什么

P12(一种证书打包格式,常见文件后缀为 .p12 或 .pfx)是一个容器文件,里面装了两样东西:一份数字证书,和与之配套的私钥。

这两样必须成对出现才有意义。证书相当于”身份凭证”,私钥相当于”盖章的那把钥匙”。少了私钥,证书只是一张不能用的身份证。而 P12 的作用,就是把这一对完整地打包在一起,方便转移和使用。

这也是它和单纯的证书文件的区别——后者可能只有公钥部分,无法完成签名动作。

它从哪来

标准路径是:在开发者账号里创建证书请求,下载生成的证书,然后在当初生成请求的那台电脑上,从钥匙串中把证书连同私钥一起导出,导出时选择 P12 格式。

这里有个关键前提:必须回到生成证书请求的那台电脑。私钥保存在那台设备的钥匙串里,换一台机器就导不出来。这是很多人在迁移电脑后”证书还在但签不了”的根本原因。

导出时通常需要设置一个保护口令,后续使用时要先输入这个口令才能解开。这个口令要妥善保管,丢了只能重新走一遍生成流程。

为什么签名环节非它不可

给 IPA(iOS 应用安装包格式)签名的过程,实质是用私钥对包做一次数字签名,再把对应的证书一并打进包里。设备安装时,系统用证书里的公钥去验证这个签名是否匹配。

匹配,说明包确实来自该证书持有者,且内容没被改动过;不匹配,安装或启动就会被拦下。

所以没有 P12,就没有私钥,也就无法完成这个签名动作。这是它不可替代的原因。

它和描述文件是两回事

经常有人把这两样搞混。它们是配套使用的,但作用完全不同:

  • P12:解决”谁来签”——提供签名所需的身份与私钥。
  • 描述文件:解决”允许装在哪、能干什么”——记录允许安装的设备列表、应用标识、可使用的服务权限。

签名时两者都要用到。只有 P12 没有描述文件,签出来的包装不上;只有描述文件没有 P12,根本签不了。理解这个分工,排查问题时会清晰很多。

有效期与失效

证书有明确的有效期,到期后签出来的包将无法通过校验。此外,如果证书在有效期内被主动吊销,同样会立即失效。

这两种情况的表现很像——已安装的应用在启动时出问题——但成因不同。前者可以预期和预防,后者属于突发。处理方式也不一样,判断清楚再动手能少走弯路。

保管上的四条建议

  • 备份私钥来源。生成证书请求的那台电脑要做好备份,或者导出后立即妥善存档。私钥丢了没有找回的办法,只能重来。
  • 口令单独记录。P12 的保护口令不要和文件放在一起,也别只存在聊天记录里。
  • 控制流转范围。它具备签名能力,交给谁就等于授权谁以你的身份签名。只给确实需要的一方。
  • 到期前提早处理。把到期日记进日历,留出缓冲时间,别等到签出来的包装不上才发现。

关于”共享证书”的提醒

市面上有流传的所谓共享证书,看起来能省事,实际风险很大:你无法控制同一张证书还被谁使用,一旦其中某一方的使用方式触发问题,同一张证书下的所有设备会一起受影响。

这不是概率问题,而是必然——使用方越多,出问题的可能性越高。正规做法是使用来源清晰、用途可控的证书。


我是本期作者小思,想解决苹果企业签名、超级签名、TF签名问题?可以在微信公众号对话框找到我哦~(QQ:822404920 微信:A-mk5888)

打赏
苹果开发者账号怎么注册?个人、公司、企业三种别选错
上一篇
提示「未受信任的企业级开发者」?两分钟搞定,附找不到入口的解决办法
下一篇

发表评论

注册不是必须的

栏目导航

iOS 签名 · 1 对 1

企业签 / 超级签 / TF 签

微信 A-mk5888在线接单
生成中...
QR code title