Специальная подпись кода
Для сторонних приложений и двоичных файлов, которые вы сами компилируете и которые требуют подписи кода, используйте специальную подпись кода .
- Я предполагаю, что приложение не будет работать без подписи;
- Я предполагаю, что приложение не будет распространяться;
- Я предполагаю, что вы не заботитесь о подлинности подписи.
Специальная подпись не обеспечивает надежных преимуществ безопасности. Его можно использовать для определения того, было ли изменено приложение, и его можно применять для применения к приложению ограничений безопасности, таких как права доступа.
Специальная подпись будет проверять, codesign
но не проверять spctl
. Это может иметь или не иметь значения в зависимости от подписываемого двоичного файла. Для приложений и исполняемых файлов это вряд ли имеет значение, поскольку spctl
не запускается на локально созданных двоичных файлах.
Почему кодовый знак?
По поводу уточненного вопроса:
Как мне обращаться с неподписанным исходным кодом, который я сам компилирую, так как я не ожидаю, что участники всегда смогут или не забудут подписать свой код, особенно когда речь идет о крошечном вкладе в проекты с открытым исходным кодом со многими участниками.
Для большинства самоскомпилированных приложений нет необходимости подписывать код. Это предполагает, что вы доверяете коду приложения. В macOS вы можете открывать ненадежные приложения из Finder, см. Apple Открыть приложение от неизвестного разработчика .
Если вы не доверяете коду или разработчикам, не компилируйте и не запускайте приложение.
Ваша ответственность
Поставщик исходного кода не несет ответственности или обязательств по предоставлению предварительно скомпонованных кодированных двоичных файлов. Будучи самостоятельно скомпилированным, вся подпись кода - ваш выбор и ответственность.
Apple требует, чтобы представления в их магазинах приложений были подписаны кодом.
Apple просит разработчиков за пределами своих магазинов приложений подписать свой код, но это пока не требуется.
В обоих случаях подписываются только окончательные двоичные файлы. Оригинальный исходный код и ресурсы не подписаны.
Исходный код не подписан
Сам исходный код не может быть подписан осмысленным образом для macOS. Исходные файлы и код могут иметь цифровую подпись, как и любой другой файл, но это не влияет на то, как полученное приложение или двоичный файл обрабатывается macOS.
Как создать специальный код для подписи приложения Mac
Чтобы кодировать приложение в macOS специальной подписью, установите -s
флаг идентификации на -
:
codesign --force -s - </path/to/application>
Все остальные правила, требования и перестановки codesign
команды остаются прежними.
Флаг --force
используется здесь, чтобы перезаписать любую существующую подпись.
Вам может понадобиться добавить --deep
флаг в codesign
команду, чтобы подписать подресурсы, такие как платформы и встроенные сервисы.
Подписание программы самостоятельно не разрушает цель подписания кода. Общая цель подписания кода состоит в том, чтобы сделать возможным проверку того, что программа является неизмененной копией, которая была первоначально создана конкретной организацией (лицом или компанией). Когда вы подписываете программу только для запуска на своем компьютере, вы позволяете системе проверить, что именно вы создали двоичный файл и что он не был изменен другими.
Качественная разница между подписыванием двоичного кода приложения самостоятельно и просто разрешением приложений от неизвестных разработчиков в GateKeeper заключается в том, что в первом случае вы разрешаете запускать одно конкретное приложение, тогда как во втором вы открываете возможность того, что вы можете открыть много различные приложения, просто щелкнув правой кнопкой мыши по ним и выбрав Открыть. Т.е. это более ограничительно и, следовательно, несколько более «безопасно», подписывая конкретную программу самостоятельно.
Ответственность за подпись полностью лежит на вас. Разработчик открытого исходного кода не может подписать исходный код - это возможно только подписать скомпилированные двоичные файлы. Поскольку вы сами создаете скомпилированные двоичные файлы, вам приходится подписывать их.
Вы можете зарегистрировать учетную запись разработчика на веб-сайте Apple, которая позволит вам создать сертификат, который можно использовать для подписи. Если вы разработчик и регулярно компилируете двоичные файлы для запуска на Mac, это предпочтительный способ работы. Если это одноразовая вещь, которую вы, вероятно, больше никогда не сделаете, вероятно, пройти этот процесс излишне. YMMV.
Другие ответы на ваш вопрос здесь рекомендуют использовать специальную подпись для вашего двоичного файла. Это не будет работать. Вам нужно будет сгенерировать действительную подпись, чтобы бинарный файл работал с GateKeeper в наиболее безопасном режиме.
источник
Если вы не разработчик, то нет.
Вкратце, подписывание кода - это способ сказать, что вы (разработчик) являетесь тем, кем вы себя называете, и код не изменился с момента вашей последней подписи.
Похоже на вашу запутанную подпись кода (что требуется разработчикам для публикации приложений в App Store) и Gatekeeper (что защищает ваш Mac от установки программного обеспечения от неизвестных разработчиков).
Если вы разрешите вашему Mac устанавливать программное обеспечение как из App Store, так и от определенных разработчиков, вы все равно получите всплывающее окно с предупреждением о том, что программное обеспечение будет установлено.
И если это от неопознанного разработчика, вы получите то же самое всплывающее окно со значком предупреждения
Вы все еще можете установить программное обеспечение. Это всего лишь механизм, который вынуждает пользователя взаимодействовать для фактической установки программного обеспечения, обеспечивая вам уровень защиты от самостоятельно устанавливаемого вредоносного ПО.
источник