什么是 macOS 应用签名?应用公证又是什么意思?
在安装 macOS 软件的时候小伙伴们经常会看到签名有效/签名无效等字样。在运行软件的时候有时候会出现已损坏,不受信任的开发者等等提示,这都是签名引起的。
什么是签名?
代码/应用签名是一种 macOS 安全技术,用于证明应用程序的来源。一旦应用程序被签名,系统就可以检测到应用程序的任何更改。无论更改是意外引入的还是由恶意代码引入的,比如对应用程序进行任何修改都会使签名失效。
要对应用进行签名,你需要注册苹果开发者账户,然后购买苹果开发者证书(分为个人和企业)。价格的话个人 99 美元,企业 299 美元。
签名证书分类
类型 | 描述 |
---|---|
Apple Development | 通用的:为 iOS、macOS、tvOS 和 watchOS 应用程序签名。 |
Apple Distribution | 提交到 App Store 或进行临时分发时使用。 |
iOS App Development | 对 iOS 应用程序签名,一般用于开发测试。 |
iOS Distribution (App Store 和 Ad Hoc) | 对 iOS 应用程序签名然后提交到 App Store 或进行临时分发。 |
Mac Development | 对 Mac 应用程序签名,一般用于开发测试。 |
Mac App Distribution | 对 Mac 应用程序签名并配置分发文件提交到 Mac App Store。 |
Mac Installer Distribution | 对 Mac 应用程序的安装包签名然后提交到 Mac App Store。 |
Developer ID Installer | 对应用程序的安装包签名,用于非 Mac App Store 分发。 |
Developer ID Application | 对应用程序签名,用于非 Mac App Store 分发。 |
Ad Hoc | 对应用进行临时签名 |
应用公证
当对应用签名后还需要将应用提交给苹果进行公证,经过苹果公证后的应用程序理论上则为安全的。公证简单点来说就是苹果检查应用是否包含恶意代码,如果包含则拒绝,未包含则回执经过公证的应用程序包。
公证让用户可以更加放心,确信用 Developer ID 签名的应用已通过 Apple 的恶意组件检查。公证并不是 App Review 审核,Apple 公证服务是一个自动化系统,它会扫描应用中有没有恶意内容,检查代码签名是否存在问题,并将结果快速反馈。如果没有问题,公证服务会生成一个凭证并内嵌到应用中。
当用户首次安装或运行您的软件时,“Gatekeeper 门禁”通过该凭证进行联网验证,这样可确保该软件已经过 Apple 公证。然后,“门禁”会在初始启动对话框中置入描述信息,让用户能明智地决定是否启动相应的 app。
自 macOS 10.14.5 开始,用新 Developer ID 证书签名的软件以及所有新的或更新的内核扩展都必须经过公证才能运行。自 macOS 10.15 开始,所有在 2019 年 6 月 1 日后构建并使用 Developer ID 分发的软件都必须经过公证。不过,通过 Mac App Store 分发的软件不需要进行公证,因为 App Store 提交流程中已包含同等的安全性检查。
不签名/签名失效会怎样?
此时运行应用的时候会有以下提示:
类型 | 描述 |
---|---|
xxx已损坏,无法打开,你应该将它移到废纸篓解决办法 | 这是应用未签名/应用被修改导致签名失效引起的 |
打不开 xxx,因为它来自身份不明的开发者 | 这是应用签名但是未公证引起的 |
打不开xxxx,因为 Apple 无法检查其是否包含恶意软件 | 这是证书到期/证书被苹果删除/开发者不小心将证书删除引起的 |
如果应用未签名你将无法追溯应用的来源(开发者信息)。
应用被修改会导致应用原始的签名失效,此时应用和未签名是一样的,将无法判断应用是否包含恶意代码。
开源软件大多都没有购买开发者证书对应用签名,而破解版几乎都会修改应用文件,此时你需要自行判断应用来源是否安全。