我有一个Mac OSX电子应用程序,我使用电子建设者签名。我的证书有效,直到2020年才会到期。当我构建应用程序的.app和.dmg文件并运行spctl --assess --verbose MyApp.app/
时,它会显示“已接受”。当我从浏览器下载包含.app的dmg或zip文件并运行它时,会出现一个对话框,说这个应用程序已损坏,可以选择将其移至废纸篓。我的应用程序之前发布的没有此类问题的版本现在抛出此错误,尽管仍在本地传递spctl -a
。 codesign --verify --verbose MyApp.app/
也说它有效。此外,如果我在本地运行应用程序,它不会抛出这些错误。
这里发生了什么?
答案 0 :(得分:0)
签名后,嵌套的应用程序依赖项以某种方式更改,这使签名无效。要检查此项,您必须运行codesign --verify --deep MyApp.app/
。 --deep
标志通过嵌套依赖项进行递归并验证它们。
从互联网下载应用程序的原因将触发Gatekeeper安全检查,否则将不会发生。对于使用电子构建器的电子应用程序,已添加深度代码签名验证,请参阅此处的详细信息:https://github.com/electron-userland/electron-osx-sign/issues/42。