如何在OSX Catalina中运行未签名的系统扩展?

3
如何在OSX catalina中运行未签名的系统扩展?
我正在尝试加载SimpleFirewall,这是苹果提供的系统扩展,旨在演示分组过滤功能。
该项目已编译,但在运行时出现了以下错误:
OSSystemExtensionErrorDomain error 8

查阅后得知,它的意思是 -

代码签名无效或缺失权限

我已禁用SIP,并在xcode项目中关闭了代码签名.. 我还能做什么才能让它运行?我没有开发者ID.. 只是测试代码..


你看过关于这个主题的开发者论坛帖子了吗? - pmdj
我有疑问,购买开发者ID真的是唯一的解决办法吗? - toti
3个回答

2
根据 Eskimo 在 Apple 开发者论坛 上的回答,除了禁用 SIP 和启用 SYSX 开发者模式 (systemextensionsctl developer on) 外,
您还需要禁用 AMFI: nvram boot-args="amfi_get_out_of_my_way=0x1” 必须在恢复模式下使用 cmd 执行此操作。 据我所知,只有当您没有具有 com.apple.developer.endpoint-security.client 权限的开发人员供应配置文件时才需要这样做。

1

苹果关于“调试和测试系统扩展”的文档提供了一些相关信息。

理论上,禁用SIP应该可以解决签名要求。您可能仍需要使用免费的Mac开发人员证书对扩展进行签名,以便嵌入授权。

您是否正在尝试从应用程序外部使用扩展?如果是,命令

systemextensionsctl developer on

应该能帮到你。


谢谢,我已经开启了,但我如何设置免费的开发者证书呢? - toti
@toti 如果你只是使用你的Apple ID登录开发者区域,然后将其添加到Xcode首选项中的“账户”部分,你就应该获得“Mac开发者”证书。据我所知,我不确定这个证书是否能让你开发系统扩展,但根据文档,这是可能的,值得一试。 - pmdj
1
@toti 我刚刚在基于DriverKit的系统扩展中使这个工作了 - 至少在那种情况下,问题是Xcode抱怨扩展的授权与签名证书不匹配。将扩展目标的代码签名步骤移动到运行构建阶段的自定义脚本中解决了我的问题。在苹果开发者帐户门户网站上创建一个应用程序ID并选中“系统扩展”框后,生成开发配置文件并在Xcode中使用该配置文件进行代码签名,主应用程序的签名正常工作。 - pmdj
@toti 如果你仍然在处理这个问题,请更新问题并提供你的代码签名设置和扩展程序以及应用程序目标的授权,以及你当前遇到的错误。 - pmdj

-1

我和@tuti有同样的问题。 我正在测试一个基于Driver Kit的Hello World系统扩展。我使用免费的开发者帐户,Mac mini Catatila,Xcode 11进行开发。 在我的Xcode中,我设置不为应用程序和系统扩展签名。我还禁用了SIP并运行了命令“systemextensionsctl developer on”。 但是当我从Swift应用程序加载系统扩展时,它仍然显示日志“操作无法完成。(OSSystemExtensionErrorDomain错误8。)”。当我查找错误8时,它意味着无效签名。但是在我的计算机上,我可以正常加载未签名的内核扩展。 所以,我不知道为什么?我认为OS仍然会检查系统扩展的代码签名,而不管我是否禁用了SIP。


似乎这个错误也可能意味着“缺少授权”。 - IlliakaillI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接