Подписание библиотек в приложении Mac App Store

#macos #code-signing #mac-app-store

#macos #подписание кода #mac-app-store

Вопрос:

Я только что отправил приложение в Mac App Store, которое использует некоторые внешние динамические библиотеки.

Я получил электронное письмо от Apple, в котором говорится, что:

Недопустимая подпись — исполняемый файл something.app/Contents/Frameworks/some.dylib не подписан, подпись недействительна или она не подписана сертификатом отправки Apple. Для получения дополнительной информации обратитесь к руководству по подписи кода и изолированной среде приложений.

Проблема, конечно, вызвана тем фактом, что я подписал только «мой» исполняемый файл, а не библиотеки.

Является ли обычной / хорошей практикой также подписывать библиотеки, даже если они написаны не мной?

Ответ №1:

Представьте себе цифровую подпись файла как:

  1. Средство проверки целостности этого файла, что позволяет определить, был ли он изменен;
  2. Средство проверки того, кто опубликовал этот файл, что не то же самое, что написать соответствующий исходный код. Вы подтверждаете, что это действительно вы отправили этот файл.

Поскольку динамические библиотеки содержат исполняемый код, рекомендуется (а в некоторых случаях, например, MAS, обязательно) подписывать их цифровой подписью по той же причине, по которой вы подписываете основной исполняемый файл: гарантируя, что ваше приложение — это именно то, что вы (и только вы) отправили со своего компьютера сборки, неткакие бы то ни было изменения. Запущенная программа включает в себя основной исполняемый файл и все загруженные библиотеки. Если вы подпишете только основной исполняемый файл, оставив динамические библиотеки неподписанными, можно будет изменить динамические библиотеки (или даже заменить их), тем самым изменив то, что делает ваша программа.