You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS 13中已codesign的Go二进制为何被标记为未知开发者

macOS 13 登录项将已签名LaunchDaemon识别为未知开发者的核心原因

macOS 13 系统设置登录项面板的开发者身份识别逻辑,与spctl校验单个二进制签名合法性的逻辑完全独立:

  • 该面板不会直接读取LaunchDaemon/LaunchAgent对应可执行文件本身的签名信息,而是通过启动项plist中声明的关联绑定ID,匹配到对应已安装的签名应用/安装包后,从主程序的签名信息中提取开发者身份展示。
  • 你当前的配置存在两个明确不符合系统识别规则的问题:
    1. LaunchDaemon对应的plist配置缺失必填的AssociatedBundleIdentifiers字段,系统无法将该启动项和你已签名公证的Mactless.app做归属关联
    2. 你将Go编写的LaunchDaemon可执行文件放在了.app包的Contents/Resources目录下,不符合macOS应用Bundle结构规范,可执行辅助程序存放于Resources目录时,不会被系统识别为主应用的合法关联组件,哪怕二进制本身单独签名、公证通过也无法被关联识别。
修复方案
  • 调整LaunchDaemon二进制的存放路径:将tless从Contents/Resources移动到主App包内的Contents/Library/LaunchServices目录,签名时按照先签嵌套二进制、再签外层App的顺序执行签名操作,完成后重新走公证流程。
  • 在LaunchDaemon对应的plist配置文件中添加关联字段,示例配置如下:
<key>AssociatedBundleIdentifiers</key>
<array>
    <string>你的主App Bundle ID</string>
</array>
  • 注册LaunchDaemon时优先使用系统官方API:macOS 13及以上版本用SMAppService注册系统级服务,旧版本兼容使用SMJobBless,避免直接用脚本复制plist到/Library/LaunchDaemons目录的粗暴安装方式。
  • 修复完成后可以执行sfltool dumpbtm命令查看启动项条目信息,只要对应条目的developer字段正确显示你的Developer ID信息,系统设置登录项面板就不会再显示“未知开发者”。

补充说明:spctl -a校验单个二进制返回accepted、source为Notarized Developer ID,仅代表该二进制本身满足系统运行的签名、公证要求,不能作为登录项归属识别正常的判断依据。

内容的提问来源于stack exchange,提问作者fsctl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 07:42:18