macOS kext с неверной подписью - PullRequest
0 голосов
/ 05 октября 2018

У нас есть идентификатор разработчика с поддержкой kext, который мы используем для подписи кода, и я убедился, что сертификат содержит требуемое расширение 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-сертификаты', чтобы убедиться, что правильный идентификатор разработчика с поддержкой kext действительно былиспользуется во время процесса подписания.

У меня есть сертификаты «Всемирный центр сертификации по связям с разработчиками Apple» и «Сертификационный центр по идентификатору разработчика» в цепочках ключей для входа и системы.

Любые предложения о том, куда идтиотсюда?Спасибо!

1 Ответ

0 голосов
/ 06 октября 2018

Я понял это.Оказывается, macOS 10.13+ по умолчанию запрещает кексы - даже те, которые подписаны с действительным Dev с поддержкой kex.Удостоверение личности (которое у нас есть).Решение описывается в этой технической заметке (и упоминается в комментариях выше):

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

При первой попытке загрузить kext macOS должен представить пользователюс всплывающим окном, сообщающим им, что это было заблокировано.Затем пользователю необходимо перейти в Системные настройки> Безопасность и конфиденциальность, чтобы утвердить kext.Обратите внимание, что утверждение должно произойти в течение 30 минут после попытки загрузки, иначе оно исчезнет.Последующие попытки загрузки будут отвергнуты без уведомления, но будут активированы в разделе «Безопасность и конфиденциальность», что даст пользователю еще один шанс утвердить kext.

$ 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>
...