知识卡片

代码签名把设备信任建立在证书链上

专业/工作 · 728.c

内容

一个 App 想跑在真机上,代码必须先用开发者证书签名,设备才会认为这是”经过授权可运行的代码”而非任意来路不明的二进制——这是防止恶意代码未经许可就在设备上执行的第一道关卡。描述文件(Provisioning Profile)把开发证书、应用唯一标识(AppID/BundleID)、被授权运行该应用的设备列表这三者绑定在一起,设备安装 App 前会校验这份文件,任何一项不匹配都会拒绝运行。免费的开发者身份只能签名给少量指定设备做内部测试,只有升级成付费的认证开发者才能签发用于 App Store 分发、面向所有用户的发布证书。这一整套机制的本质是用证书链把”谁写的代码、这段代码有没有被篡改、允许在哪些设备上跑”这三个信任问题,在代码运行之前就用密码学手段锁死,而不是靠系统运行时再做行为审查。

参考来源

《Swift全解析:新式iOS实战开发》第23章《中级》