Col*_*nik 1 macos code-signing
我们的应用已经过代码签名。我们的Apple证书是最新的。我们应用的先前版本运行良好。
但是,当用户下载DMG时,在某些Mac上,该应用程序将被隔离,但对于大多数用户而言,事实并非如此。因此,某些用户可以打开该应用程序,而其他用户则得到“由于无法确认开发者的身份而无法打开X.app”。
幸运的是,我这里有2台Mac,但都存在隔离问题,但是我们找不到这些Mac与其他Mac之间的区别。还有其他人遇到这个问题吗?
我认为您可能对隔离,代码签名和网闸的工作方式感到困惑。您看到的错误是来自Gatekeeper,它指示两个不同(且独立)的事物:1)应用程序被隔离(与下载方式有关,而不与签名方式有关); 2)未登录符合“安全性和隐私”首选项中定义的Gatekeeper策略的方式。让我更详细地解释这两件事。
隔离是下载应用程序(或其中的磁盘映像)的结果。当您使用浏览器下载文件时,浏览器将com.apple.quarantine为其附加属性,表明该文件来自不受信任的网络源。其他类型的Internet应用程序(电子邮件,聊天等)也应将此属性附加到下载的文件中。
但是,并非所有的网络下载方法都将应用隔离属性。例如,使用Finder通过文件共享连接(例如AFP或SMB)复制文件时,不会将其标记为隔离区。此外,命令行工具,如curl与wget不适用隔离。
就您而言,下载.dmg文件时,它会被标记为已隔离;当您打开它时,该属性会传播到其内容,因此该应用程序也被标记为处于隔离区(如果将其复制到/ Applications,则该隔离区属性将与其他所有内容一起复制)。
要检查文件是否被隔离,请ls -l@在该文件上使用并查找该com.apple.quarantine属性。您在不同计算机之间看到的差异完全可能与磁盘映像的下载方式有关,因此也与应用程序是否被隔离有关。
当您打开隔离的应用程序时,Gatekeeper会检查该应用程序是否符合您计算机的安全策略子系统。这就是代码签名的地方。您可以在系统偏好设置->安全和隐私窗格->常规选项卡->“允许从中下载应用程序”或使用spctl命令行工具来查看和更改策略。默认策略是允许隔离来自Mac App Store(即用Apple的应用商店密钥签名)或已识别的开发人员(即用Apple颁发给注册开发者的开发者ID密钥签名)的隔离应用程序。
当您尝试打开被隔离的应用程序,并且未按照符合此策略的方式签名时,您会收到一条错误消息,指出“无法打开X.app,因为它来自身份不明的开发人员”或“ ...不是从Mac App Store下载。” 如果已隔离但确实符合该政策,则会收到一条消息,提示“ X.app是从Internet下载的应用程序。确定要打开它吗?”。(具有“打开”按钮)。如果未隔离,则不执行检查,应用程序将直接打开。
您可以使用和来获取有关应用程序的代码签名和策略状态的更多信息spctl --assess -vv /path/to/X.app(它将告诉您它是否符合Gatekeeper策略)codesign -dvv /path/to/X.app。
总而言之,隔离是正常的,您应该期望用户能够体验到隔离(如果您在一台测试计算机上没有看到隔离,则测试方式有问题)。Gatekeeper错误取决于正确的签名(与codesign和进行检查spctl)以及计算机上的Gatekeeper策略设置。都检查一下,看看发生了什么。
| 归档时间: |
|
| 查看次数: |
1080 次 |
| 最近记录: |