我刚刚向使用一些外部动态库的Mac App Store提交了一个应用程序。
我收到了来自Apple的电子邮件说:
无效签名 - 可执行文件something.app/Contents/Frameworks/some.dylib未签名,签名无效,或未签署Apple提交证书。有关详细信息,请参阅“代码签名和应用程序沙盒指南”。
问题当然是由于我只签署了“我的”可执行文件,而不是库。
即使这些图书馆不是由我写的,也是通常/好的做法吗?
答案 0 :(得分:2)
将数据签名为:
一种验证该文件完整性的方法,从而可以检测它是否已被修改;
一种验证发布该文件的方法,这与编写相应的源代码不同。你在证明你真的是那个人发了那个文件。
由于动态库包含可执行代码,因此签署主可执行文件的相同原因是对其进行数字签名,这是良好的做法(在某些情况下,例如MAS,强制性):保证您的应用程序与您完全相同(并且只有你)从你的构建机器发货,没有任何变化。正在运行的程序包括主可执行文件和所有已加载的库。如果仅对主可执行文件进行签名,使动态库保持未签名状态,则可以更改动态库(甚至替换它们),从而改变程序的功能。