【问题标题】:codesigning for KernelExtension in OSx10.10OS x 10.10 中内核扩展的代码签名
【发布时间】:2015-06-05 13:03:19
【问题描述】:

如果我们在 10.10 OSx 中使用开发证书签署 kext,那么该签名是否适用于其他以前的 OSx 版本? 如果不是,那么使 kext 二进制签名与所有 OSx 版本兼容的解决方案是什么?我们是在 diff diff 版本的 OSx 上签名 diff diff 二进制文件,还是在 diff diff OSx 版本上签名相同的二进制文件?

【问题讨论】:

    标签: osx-yosemite code-signing kernel-extension


    【解决方案1】:

    签名的 64 位 kext 可在 10.10、10.9 和 10.8 上运行。未签名的 kexts,包括通用 kexts,将工作到 10.8。如果您需要支持比 10.8 更旧的新版本,则至少需要 2 个版本的 kext。如果启动时不需要 kext,一个方便的方法是放置一个签名版本,它具有相同的捆绑 ID,但捆绑版本号更高,并且依赖于 /Library/Extensions 中的 10.9 的 KPI,以及遗留的(无符号,通用)/System/Library/Extensions 中的 kext。 /Library/Extensions 中只有 10.9 和更新的外观。如果启动需要您的 kext(例如,存储控制器驱动程序或存储控制器驱动程序的依赖项),那么您可能会遇到 /Library/Extensions 的问题,并且您需要在 /SLE 中安装这两个版本,只是文件名不同.

    还请注意,您通常希望针对支持的最旧 OSX 版本的 SDK 构建每个 kext。 “部署目标”不适用于 kexts,你会发现例如如果针对 10.8 SDK 构建,即使使用 10.6 部署目标,大多数 kext 都不会在 10.6 上加载。如果您想支持仅在较新版本的 kext 中可用的功能,您可能需要比签名/未签名拆分更多的变体。

    【讨论】:

    • 我在某处读到,从 10.10 OSx 开始,Kext 的签名已成为强制性的,直到 10.9 为止,它是可选的,否则将不会加载 Kext。所以我必须订阅 Mac OSx 开发者门户以获得代码签名证书。你能告诉我我们是怎么得到的吗,拜托。我有私钥/公钥和一个使用扩展的证书(我在 Keychain 中找到的所有内容,不确定这是否是我们需要发送到苹果开发者门户的证书。:\)。你能告诉我具体的程序是什么吗?
    • 你申请了特殊的kext签名证书吗?您的“开发者 ID”证书不会自动授权您签署 kexts。获得批准后,您需要重新颁发证书,然后用它签署您的 kext。
    • FWIW,即使使用 10.9,用户也会看到警告,因此您绝对应该签署 kexts 以在 10.9 上部署。这是安装在 /Library/Extensions 中的任何 kexts 的要求
    • 到目前为止我还没有申请任何证书,因为我不知道在哪里申请。我刚刚登录了我在 Mac OSx 开发人员中注册的 Apple ID。
    • 你需要在这里申请。在我的情况下,大约需要 4 周的时间才能获得批准。 developer.apple.com/contact/kext
    猜你喜欢
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多