Я пытаюсь распространить приложение (само подписанное кодом) внутри тома DMG с кодовой подписью, подписанного самозаверяющим сертификатом кода (созданным с помощью помощника по сертификации связки ключей).
Я использую macOS Mojave и создаю DMG, используя следующую процедуру:
- Создайте новую пустую папку
testsrc
- Скопируйте пакет приложений с подписью кода в новую папку
Запустить
hdiutil create -volname test -srcfolder testsrc -ov -format UDBZ test.dmg
Подпишите код DMG:
codesign -s keyid test.dmg
Это успешно (нет сообщения об ошибке, код возврата 0). Более того, повторная попытка выполнить codesign
приводит к сообщению «test.dmg: уже подписан». Могу проверить подпись:
codesign -vvvv -d test.dmg
Executable=/path/to/test.dmg
Identifier=test
Format=disk image
CodeDirectory v=20100 size=291 flags=0x0(none) hashes=1+6 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=73…
Hash choices=sha256
Page size=none
CDHash=73… (same as above)
Signature size=1760
Authority=keyid
Signed Time=12 Dec 2018 at 18:26:31
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=96
Однако, когда я пытаюсь открыть помещенный в карантин (загруженный с localhost) DMG, я получаю обычное сообщение об ошибке привратника:
Кроме того, spctl -v -a -t open --context context:primary-signature test.dmg
сообщает мне: «test.dmg: rejected».
Это просто потому, что мой сертификат самоподписан, а не является сертификатом приложения Apple Developer ID? Есть ли способ обойти это?
Я видел ответы в разделе Как добавить кодовую подпись в файл dmg на Mac, но они предполагают, что описанная выше процедура должна работать.
codesign --verify
, так и черезspctl -v -a -t exec
.) - person Konrad Rudolph   schedule 12.12.2018