2

我的安装程序是使用 PackageMaker 创建的。之后,我使用以下命令对安装程序进行了代码签名。

productsign --sign 'Blah, Inc.' 安装.mpkg/CS/Install.mpkg

这似乎工作得很好,我可以看到它是使用以下命令签名的。

pkgutil --check-signature 安装.mpkg

由于证书以钥匙串的形式安装在我的系统上,因此安装程序似乎在右上角显示了一个小锁。单击此按钮将打开证书。

如果将安装程序放置在未安装证书的系统中,则不再看到锁。但是我仍然可以运行命令来检查证书。

1) 安装前是否有图形方式来检查代码签名?(我不想运行命令行)

2)我使用finder从mpkg文件中删除了一个文件夹,以查看安装程序是否会抱怨篡改。但这不会发生。如果被篡改,安装程序是否可以停止安装?

3)我还使用 xcode 的选项对我的包中的所有二进制文件(主要是守护进程)进行了代码签名以使用证书。我再次可以看到二进制文件已签名,但是我确实收到一条消息 kernel[0]: CODE SIGNING: cs_invalid_page(0x1000): p=224[MyDaemon] clearing CS_VALID。

谷歌搜索,我发现http://feedback.photoshop.com/photoshop_family/topics/photoshop_13_0_4_x64_how_can_i_get_rid_of_the_could_not_complete_your_request_because_of_a。但是,我仍然不太清楚他们在做什么。有人可以帮助我吗?

4

2 回答 2

3

可以签名。mpkg包,但您必须使用Developer ID Application证书而不是证书对其进行签名Developer ID Installer

当您签名时,.mpkg您会收到一个警告,提示必须对内部包进行签名,但无论是否有内部签名,签名似乎都是有效的.pkg

我已经测试过修改内部 .pkg 会导致 .mpkg 无法通过 Gatekeeper 检查 损坏的安装程序

因此,对于每个内部 .pkg 文件,您应该:

sudo productsign --sign "<Developer ID Installer: Cert>" "<source.mpkg>/Contents/Packages/<source.pkg>" "<destination.mpkg>/Contents/Packages/<source.pkg>"

然后对于 .mpkg 执行以下操作:

sudo productsign --sign "<Developer ID Application: Cert>" "<Source .mpkg>" "<Destination .mpkg>"
于 2014-02-04T22:33:21.730 回答
-1

您只能签名flat packages。您的软件包具有扩展名 .mpkg,我认为这是较旧的捆绑格式。如果您想签署它们,请确保您使用的是平面包。

于 2013-08-15T09:03:12.470 回答