Мой DMG с кодовой подписью отклонен GateKeeper

Я пытаюсь распространить приложение (само подписанное кодом) внутри тома DMG с кодовой подписью, подписанного самозаверяющим сертификатом кода (созданным с помощью помощника по сертификации связки ключей).

Я использую macOS Mojave и создаю DMG, используя следующую процедуру:

  1. Создайте новую пустую папку testsrc
  2. Скопируйте пакет приложений с подписью кода в новую папку
  3. Запустить

    hdiutil create -volname test -srcfolder testsrc -ov -format UDBZ test.dmg
    
  4. Подпишите код 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, я получаю обычное сообщение об ошибке привратника:

Привратник: невозможно открыть test.dmg, потому что он от неизвестного разработчика

Кроме того, spctl -v -a -t open --context context:primary-signature test.dmg сообщает мне: «test.dmg: rejected».

Это просто потому, что мой сертификат самоподписан, а не является сертификатом приложения Apple Developer ID? Есть ли способ обойти это?


Я видел ответы в разделе Как добавить кодовую подпись в файл dmg на Mac, но они предполагают, что описанная выше процедура должна работать.


person Konrad Rudolph    schedule 12.12.2018    source источник
comment
(Как бы то ни было, кажется, что сам пакет приложений правильно проверяется как через codesign --verify, так и через spctl -v -a -t exec.)   -  person Konrad Rudolph    schedule 12.12.2018
comment
stackoverflow.com/a/26834676/233944   -  person TheNextman    schedule 12.12.2018


Ответы (1)


Это просто потому, что мой сертификат самоподписан, а не является сертификатом приложения Apple Developer ID?

В двух словах: да.

После использования ключа из подписанного Apple сертификата разработчика ошибка исчезла, и приложение теперь проходит проверку гейткипером.

person Konrad Rudolph    schedule 17.12.2018
comment
Это неудовлетворительный ответ, но я надеюсь, что он поможет людям найти этот вопрос через поиск в Google. В то время, когда я спрашивал об этом, было практически невозможно найти какую-либо информацию по этому поводу. - person Konrad Rudolph; 18.12.2018
comment
По-прежнему сложно найти исчерпывающую информацию ... Документация Apple охватывает только очень конкретные варианты использования, которые, кажется, никогда не совпадают с моими. Я подписал сертификат Comodo, и он кажется нормально работает локально. Однако, если я перенесу DMG на наш веб-сайт и загрузю оттуда, затем это не удастся. Я попробую сертификат Apple ... - person Brian Knoblauch; 26.12.2019
comment
@BrianKnoblauch Начиная с macOS Catalina подписи кода больше недостаточно, вам необходимо нотариально заверить каждое приложение < / а>. - person Konrad Rudolph; 27.12.2019
comment
Ах, приятно знать. Я ошибочно полагал, что нотариальное заверение предназначено только для App Store. Интересно, что когда я пытаюсь сделать свой сертификат идентификатора разработчика, эта опция неактивна, и мне предлагается связаться с администратором моей группы. Я админ ... Посмотрим, сможет ли это сделать кто-нибудь из админов. - person Brian Knoblauch; 27.12.2019