【发布时间】:2014-08-07 11:47:11
【问题描述】:
由于 Yosemite 的发布,我现在需要签署一个 KEXT。我有一个 GlobalSign 证书,用于对相应的 Windows 驱动程序进行代码签名,所以我通过 Keychain Access 导入了它,没问题。
按如下方式签署 KEXT:
sudo codesign -s "<keychain certificate name>" --timestamp=http://timestamp.globalsign.com/scripts/timstamp.dll MyKext.kext
说 A OK 并且:
spctl --assess --type execute MyKext.kext
说:
MyKext.kext: accepted
override=security disabled
但是将该 KEXT 复制到 Yosemite 目标系统 spctl 说:
MyKext.kext: rejected
知道为什么会出现这种差异吗?
编辑:我注意到 KEXT 中的二进制文件没有改变,只有 _CodeSignature 文件夹被添加到 Contents (!) 下
EDIT2:使用 kextutil -tn MyKext.kext 检查产生:
Diagnostics for MyKext.kext:
Code Signing Failure: code signature is invalid
MyKext.kext appears to be loadable (including linking for on-disk libraries).
我已经仔细检查了钥匙串中的证书,该证书被标记为有效(代码签名为“扩展密钥用法”)
【问题讨论】:
标签: macos code-signing kernel-extension