Единственный способ самостоятельно подписать приложение для Gatekeeper - это зарегистрироваться в программе Apple для разработчиков (в настоящее время 100 долларов США в год), подписаться на сертификат для подписи кода и установить XCode для создания "вашего" приложения.
Затем вы можете создать приложение в XCode и просто включить содержимое другого приложения, которое вы действительно хотите запустить, в свой пакет приложений, а затем подписать его своим сертификатом. Это приложение сможет запускаться где угодно (хотя вы, возможно, нарушаете лицензию оригинального программного обеспечения).
Очевидно, это не очень практично. Метод, предложенный в другом ответе здесь для копирования содержимого в комплект другого приложения, сам по себе не обойдет Gatekeeper. Проверка «Известный разработчик» требует, чтобы пакет приложений содержал подпапку _CodeSignature
и идентификатор приложения, который соответствует подписанному разработчику в файле Info.plist
пакета. Оба из них будут уничтожены, если вы замените все содержимое, и выборочная замена содержимого приведет к тому, что приложение будет иметь сигнатуру кода, которая не совпадает с сигнатурой приложения, которым она себя утверждает.
Если этот метод «трансплантации» работает, то это не потому, что он обманывает Gatekeeper; скорее потому что он предотвращает привлечение Gatekeeper. Независимо от того, подписан ли пакет приложений, система Gatekeeper будет проверять только те приложения, которые находятся на карантине. Это означает, что в файл был добавлен флаг расширенного атрибута, который указывает, что он был загружен из Интернета или в противном случае из неизвестного источника. Safari и Mail добавят этот флаг к загруженным файлам, но не требуется, чтобы все приложения работали таким образом. Вы можете увидеть этот флаг, выполнив команду ls -l@
в каталоге, содержащем ваш пакет приложений:
drwxr-xr-x@ 3 self wheel 102 Jul 7 2013 My Sketchy App.app
com.apple.quarantine 57
Если вы копируете содержимое приложения в пакет другого приложения, то у вновь созданного приложения есть все расширенные атрибуты, которые ранее был у пакета. Так что, если у него не было флага quarantine
, ни ваше новое приложение, ни вы не сможете его запустить. Но если это действительно есть флаг quarantine
он все равно будет, и привратник будет действовать.
Пересадка содержимого приложения - это всего лишь окольный способ удаления этого флага. Вы можете сделать то же самое, просто удалив флаг quarantine
непосредственно из приложения, например так:
xattr -d com.apple.quarantine "./My Sketchy App.app"
или вы можете косвенно удалить флаг quarantine
, запустив / разрешив приложение на другом Mac (который не имеет действующих ограничений Gatekeeper, или если у вас есть учетная запись администратора, позволяющая переопределить его), а затем скопировав его на компьютер с ограниченным доступом с помощью метод, который не воссоздает флаг (например, приложения, скопированные из общего ресурса SMB, не будут помещены в карантин).
Короче говоря: щелчок правой кнопкой мыши "Открыть" (или "Открыть в любом случае" на экране "Безопасность" в Системных настройках) добавляет исключение для Gatekeeper для рассматриваемого приложения, которое требует прав администратора. Чтобы quarantine
флаг карантина из приложения, требуются только разрешения на запись в комплект приложения, что не позволяет привратнику вмешиваться.