首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的内核扩展是否正确地为约塞米蒂签名?

我的内核扩展是否正确地为约塞米蒂签名?
EN

Stack Overflow用户
提问于 2015-03-10 14:29:06
回答 1查看 655关注 0票数 1

我正在尝试签署一个内核扩展文件"abc.kext“。我有一个启用了kext的证书,并试图使用以下方法对我的"abc.kext“进行签名:

代码语言:javascript
复制
codesign --sign "Developer ID Application: MyCompany (XXXXXXXX)" -a "x86_64" abc.kext

为了验证签名是否成功,我运行:

代码语言:javascript
复制
codesign --verify -vvvv abc.kext 

产出如下:

代码语言:javascript
复制
abc.kext: code object is not signed at all

还运行:

代码语言:javascript
复制
spct -a -v --type install abc.kext 

产出如下:

代码语言:javascript
复制
abc.kext:rejected
source: no usable signature

如果我跑:

代码语言:javascript
复制
kextutil -tn abc.kext

产出如下:

代码语言:javascript
复制
abc.kext appears to be loadable (including linkage for on-disk libraries).

有人能帮我找出我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 21:47:00

您没有明确地这样说,但是从您正在获得的输出来看,您似乎是在尝试协同设计一个多体系结构的kext?如果是的话,就别这么做!

命令codesign --verify -vvvv abc.kext适用于我构建和签名的kexts,不需要显式的体系结构。kextutil -n是任何不兼容的很好的指示器,包括代码签名,但它只适用于运行中的OS版本,因此您需要检查它是否与您计划支持的所有版本一起使用。

如果出于某种原因,您需要创建一个基于现有通用二进制代码而非源代码的kext签名版本,则需要提取该二进制文件的64位部分,从中创建一个kext包并对其进行签名。然后,您的安装程序可以将此签名64位的kext放在/Library/Extensions中,如果安装程序检测到它正在包含OSX10.8或更高版本的卷上安装,另外将现有的通用kext放在/System/Library/Extensions中。(此外,如果/当升级发生时,kext不会突然停止工作或生成签名警告。)

要提取64位二进制文件,请使用:

代码语言:javascript
复制
lipo -thin x86_64 abc.kext/Contents/MacOS/abc -output ./abc-64.kext/Contents/MacOS/abc

其中,abc.kext是最初的通用文本,ABC-64是您将要签署的新文本。您应该给签名的kext提供相同的包标识符,但是绑定版本号要比通用的要高,尽管它们在功能上是相同的。如果操作系统可加载,则将选择较高版本的版本。

不同OS版本中的文本需求概述:

签名的kexts只会在OSX10.8和更新版本上加载,而这些版本都带有64位的内核。如果您想支持旧版本的OS,您将需要一个单独的kext为这些版本。OSX10.6和10.7内核可以是32位或64位,所以如果您想支持这些版本,请使用一个未签名的通用kext。对64位部分进行签名的kext可能会加载到32位内核中,但肯定不会在64位10.6/10.7内核上加载。10.5和更早版本只有32位内核,当然它们同时存在于PowerPC和i386变体中(后者仅从10.4开始)。我不知道是否有可能创建一个3体系结构的kext,但我怀疑是这样的。别签就行了。

只需要在10.9和更新版本上进行签名,因此在每个kext涵盖的版本上有一点灵活性。(10.8还将很高兴地加载未签名的通用kext的64位部分)

顺便说一句,在构建kexts时,请使用与最老的对应的OS,该版本支持该构建的OS版本。部署目标机制不适用于kexts。(大部分情况下)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28966381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档