代码签名和产品签名之间有什么区别?

时间:2014-03-13 16:44:00

标签: macos package code-signing pkg-file

Apple codesignproductsign之间有何区别?我一直在和他们玩耍,虽然我无法使用productsign签署代码,但似乎我可以使用codesign签名。

所以有两个主要问题:

  • codeign和productsign之间的区别是什么?
  • 我可以使用codesign签名套餐吗?

1 个答案:

答案 0 :(得分:6)

codesign

- 用于协同签署应用程序包,框架,验证和操作签名等。

productsign

- 专门用于代码签名.pkgs和.mpkgs(安装程序包/存档)。

  

但为什么我可以使用编码签名包?

代码签名工具用于验证您签署的单个实体 - 意味着相同的程序。安装程序包不是一个实体,实际上是几个(内容,安装程序和安装程序脚本/插件)。由于代码签名工具没有区分您的.pkg实际上与其中包含的内容完全分开,因此使用它来签署安装程序包可能会导致签名无效或安装程序崩溃。

Apple的代码签名指南阅读

  

“对于安装程序包(.pkg和.mpkg包),   一切都是隐式签名的:CPIO档案包含   有效负载,包含安装脚本的CPIO存档,以及账单   材料(BOM)每个都有一个记录在XAR头中的哈希值   标题依次签名。因此,如果您修改安装脚本   (例如)在签名包之后,签名将是   无效“。