【开发笔记】如何解决 CLI Hardened Runtime is not enabled
Hardened Runtime 是 macOS 10.14,也就是始自 Mojave 加入的安全机制。目的是避免窜改的程式码,或是程式库在执行的过程中,窃取使用者的资料,或是复写系统的控制权。所以要发布在 Hardened Runtime 环境下执行的程式码,必须先经过公证(Notarize)的程序来避免恶意程式的散播与执行。
如果不在 Xcode 中开发的程式
虽然是多了一道公证的手续。不过因为整合良好的发布流程,所以如果是在 Xcode 开发环境下来编译并且发布应用,其实并不会增加开发上的负担。比较麻烦的其实是命令列下编译的程式,例如 ffmpeg 这一类的 CLI binary,公证与签章的手续得靠手动输入指令来完成。
找出开发者签证名称 Developer Identity
指令记下的话,其实很简单。
security find-identity
会看到名称类似 "Apple Development: XXXXX (XXXXX)" 的就是 Developer Identity。
签证启用 Hardened Runtime
至于签证启用的方式也不复杂。具体就是将上个步骤的 "Apple Development: XXXXX (XXXXX)" 并且同时带上需要签证的 CLI 命令列程式路径即可。
codesign --force --options runtime --sign "Apple Development: XXXXX (XXXXX)" "YOUR_BINARY_PATH"