系统无法验证共享库

System can't verify shared libraries

我有一个使用了很多共享库的可执行程序。但是,当尝试在另一台计算机上下载并 运行 时,我收到一条错误消息,提示无法打开该程序,因为无法验证这些库。 运行 的唯一方法是手动进入系统首选项并允许每个单独的库。有什么方法可以验证库,使程序可以正常 运行 吗?

库验证确保动态加载的库由签署主要可执行文件的同一实体签署。

根据 Apple: Code Signing Tasks:

A program may link against any library with the same team identifier in its code signature as the main executable, or with any Apple system library. Requests to link against other libraries are denied.

要使库得到验证,它们必须使用相同的身份进行代码签名。根据您的证书类型,您的身份将如下所示: "Developer ID Application: Firstname Lastname (XXXXXXXXXX)" 所需的团队标识符是括号中的十个字符代码。双引号中的整个字符串是所用证书的通用名称

codesign -s "Developer ID Application: Doctor Who (1234567890)" path/to/binary
警告:一旦你超出库验证范围:macOS 12 将尝试通过装订的公证票或通过在云中的 Apple 服务器上查找票证来验证团队身份。无需公证,您自己的机器 没问题,因为无需验证自我。在 macOS 12 中,默认情况下强制执行 Notary/sandbox/library validation/hardened 运行时安全方案。