1

我刚刚向 Mac App Store 提交了一个使用一些外部动态库的应用程序。

我收到一封来自 Apple 的电子邮件,内容是:

Invalid Signature - 可执行文件 something.app/Contents/Frameworks/some.dylib 未签名,签名无效,或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。

问题当然是由于我只签署了“我的”可执行文件,而不是库。

即使它们不是由我编写的,也签署库是常见/良好的做法吗?

4

1 回答 1

2

将数字签名文件视为:

  1. 一种验证该文件完整性的方法,从而可以检测它是否被修改;

  2. 一种验证谁发布了那个文件的手段,这和写相应的源代码是不一样的。您正在证明确实是您发送了该文件。

由于动态库包含可执行代码,因此对它们进行数字签名是一种很好的做法(在某些情况下,例如 MAS,是强制性的),其原因与您签署主可执行文件的原因相同:保证您的应用程序正是您(并且只有您) ) 已从您的构建机器发货,没有任何更改。一个正在运行的程序包括主可执行文件和所有加载的库。如果您只对主可执行文件进行签名,而对动态库不签名,则可以更改动态库(甚至替换它们),从而改变程序的功能。

于 2011-10-29T03:36:33.513 回答