临时代码签名
对于您自己编译的,需要代码签名的第三方应用程序和二进制文件,请使用临时代码签名。
- 我假设没有签名就不会运行该应用程序;
- 我假设该应用程序将不会分发;
- 我假设您不关心签名的身份是否有效。
临时签名不能提供可靠的安全性。它可用于确定应用程序是否已更改,并可用于将安全性限制(例如权利)应用于应用程序。
临时签名将针对codesign
而不是进行验证spctl
。这可能会或可能不会重要,具体取决于要签名的二进制文件。对于应用程序和可执行文件,这不太重要,因为spctl
它不在本地创建的二进制文件上运行。
为什么要进行代码签名?
关于提炼的问题:
我应该如何处理自己编译的未签名源代码,因为我不希望贡献者总是能够或记得对他们的代码进行签名,尤其是在涉及许多贡献者的开源项目中做出微薄贡献的时候。
对于大多数自编译应用程序,不需要代码签名。这假定您信任应用程序的代码。在macOS上,您可以从Finder打开不受信任的应用程序,请参阅Apple的“ 从身份不明的开发人员打开应用程序”。
如果您不信任代码或开发人员,请不要编译或运行该应用程序。
您的责任
源代码提供者没有责任或义务提供预构建的代码签名的二进制文件。由于是自编译的,所有代码签名都是您的选择和责任。
在这两种情况下,仅最终二进制文件被签名。原始源代码和资源未签名。
源代码未签名
对于macOS,不能以有意义的方式对源代码本身进行代码签名。源文件和代码可以像任何其他文件一样进行数字签名,但这不会影响macOS处理生成的应用程序或二进制文件的方式。
如何临时代码对Mac应用程序进行签名
要使用临时签名在macOS上对应用程序进行代码签名,请将身份-s
标记设置为-
:
codesign --force -s - </path/to/application>
该codesign
命令的所有其他规则,要求和排列保持不变。
该标志--force
在此处用于覆盖任何现有签名。
您可能需要将--deep
标志添加到codesign
命令以对子资源(例如框架和嵌入式服务)进行签名。