具有无效签名的macOS kext

时间:2018-10-05 20:07:24

标签: macos code-signing signing kernel-extension

我们有一个启用kext的Developer ID,我们正在使用该ID进行代码签名,并且我已验证证书包含所需的1.2.840.113635.100.6.1.18扩展名。但是,kextutil -tn仍然显示:

Untrusted kexts are not allowed  
Kext with invalid signature (-67050) denied: /Library/StagedExtensions/Library/Extensions/A0587A5A-52FC-46DC-832E-81919195902C.kext  

签名后,我使用“ codesign -d --extract-certificates”重新提取了签名,以验证在签名过程中确实使用了正确的启用了kext的Developer ID证书。

我在登录和系统钥匙串中都具有“ Apple全球开发者关系认证中心”和“开发者ID认证中心”证书。

关于从这里出发的建议?谢谢!

1 个答案:

答案 0 :(得分:0)

我知道了。事实证明,macOS 10.13+默认情况下会拒绝kext-甚至那些使用有效的启用了kex的Dev签名的kext。身份证(我们有)。此技术说明中描述了该解决方案(并在上面的评论中有所提及):

https://developer.apple.com/library/archive/technotes/tn2459/_index.html

第一次尝试加载kext时,macOS应该向用户显示一个弹出窗口,通知他们已被阻止。然后,用户需要进入“系统偏好设置”>“安全性和隐私”才能批准该kext。请注意,批准需要在尝试加载后30分钟内进行,否则它将消失。后续的加载尝试将被静默拒绝,但会在“安全性和隐私”中重新激活提示-为用户提供再次批准目录的机会。

$ csrutil status
System Integrity Protection status: enabled.

$ sudo kextutil -v /Users/xxx.yyy/Library/Developer/Xcode/DerivedData/zzzz-dvqiwdodghcxydamtmpmffakjyrt/Build/Products/Release/zzzz.kext
Defaulting to kernel file '/System/Library/Kernels/kernel'
/Users/xxx.yyy/Library/Developer/Xcode/DerivedData/zzzz-dvqiwdodghcxydamtmpmffakjyrt/Build/Products/Release/zzzz.kext appears to be loadable (not including linkage for on-disk libraries).
Loading /Users/xxx.yyy/Library/Developer/Xcode/DerivedData/zzzz-dvqiwdodghcxydamtmpmffakjyrt/Build/Products/Release/zzzz.kext.
/Users/xxx.yyy/Library/Developer/Xcode/DerivedData/zzzz-dvqiwdodghcxydamtmpmffakjyrt/Build/Products/Release/zzzz.kext successfully loaded (or already loaded).

$ kextstat | grep xxxxxx
161    0 0xffffff7f83af6000 0x3c9000   0x3c9000   com.xxxxxx.driver.zzzz (1) 230E04D6-5C15-373F-8F73-E23566AE3C22 <22 15 5 4 3 1>