Я принимал это так много раз, что брандмауэр уже должен это помнить.
Вы хотите, чтобы приложение "AppName.app" принимало входящие сетевые подключения?
Нажатие «Запретить» может ограничить поведение приложения. Этот параметр можно изменить на панели «Брандмауэр» в настройках «Безопасность».
Запретить | Позволять
Например, я получаю его для Eclipse при запуске своих java-программ в режиме отладки. Иногда это диалоговое окно отображается очень короткое время, например полсекунды, и исчезает. Я также получаю его для iTunes (когда я разрешаю совместное использование моей библиотеки) и других программ, даже несмотря на то, что они указаны на панели настроек брандмауэра (дополнительные настройки).
Здесь есть два варианта:
plist
файл для этих приложений, запустить их, а затем добавить в список. Plist отвечает за многие действия, и я готов поспорить, что либо обновление до ОС, либо приложение могут привести к разрыву «ссылки».О plist
файлах... Plist — это текстовый файл особого типа, который содержит свойства, которые приложение и другие ресурсы, обычно ОС, используют для хранения и повторного использования информации, необходимой для запуска приложения. plist
является типом файла и имеет множество применений, обычно для хранения пользовательских настроек, но, по сути, это XML-файл. Вы можете посмотреть, есть ли какие-либо кэши, которые обычно являются plist
файлами, для рассматриваемых приложений в /Library/Caches
и /System/Library/Caches
. Есть также один, ~/Library/Caches/
но плохие вещи могут случиться, когда там возятся, так что просто оставьте его в покое. Система заходит в эти папки по самым разным причинам, и я обычно полностью очищаю первые две папки, которые я перечислил, примерно раз в месяц.
~
s в приведенных выше путях к файлам ссылкой на домашнюю папку текущего пользователя или на корневой каталог?~
подразумевается домашняя папка пользователя. / это, конечно, корневой каталогsudo codesign --force --deep --sign - /path/to/application.app
Мне никогда не приходилось создавать сертификат, используя этот метод.
Если это не помогает, попробуйте --deep
без косой черты и без косой черты:
sudo codesign --force --sign - /path/to/application.app
Обратите внимание, просто чтобы было понятнее: после применения подписи запустите приложение, примите входящие подключения в последний раз, затем закройте и запустите снова, чтобы убедиться, что запрос ушел.
-
after --sign
означает, что используется «специальная подпись»; нет необходимости иметь сертификат для использования этой команды. Я не понимаю, почему это противоречит использованию терминала. Бегите man codesign
, чтобы увидеть объяснение.sudo codesign --force --sign - /path/to/application.app
у меня сработало, но не вариант, предложенный автором. Интересно, --deep
была ли проблема с ведущей косой чертой.Хотя ссылка RedYeti полезна, просто чтобы сэкономить несколько кликов для других, позвольте мне напомнить, как сгенерировать сертификат для подписи кода и использовать его для (повторной) подписи кода:
Создайте свой собственный сертификат подписи кода:
В разделе «Связка ключей» выберите «Связка ключей» > «Помощник по сертификатам» > «Создать сертификат». Это запускает помощника по сертификатам:
Имя: Введите здесь произвольную строку, которую вы сможете запомнить. Избегайте пробелов, иначе вам нужно будет экранировать имя сертификата при использовании codesign
из командной строки.
Тип удостоверения: Самоподписанный корень
Тип сертификата: Подписание кода
Установите флажок «Позвольте мне переопределить значения по умолчанию», это очень важно.
Серийный номер: 1 (допустимо, если комбинация имени сертификата и серийного номера уникальна)
Срок действия: 3650 (10 лет)
Электронная почта, Имя и т.д. заполняйте как хотите.
Информация о паре ключей: установлено значение RSA, 2048 бит. ИМХО особого значения не имеет.
От «Расширение использования ключа» до «Расширение альтернативного имени субъекта»: примите значения по умолчанию.
Расположение: брелок для входа.
После его создания установите значение «Всегда доверять» в цепочке ключей входа: щелкните сертификат правой кнопкой мыши, выберите «Получить информацию» и в разделе «Доверие» установите для параметра «При использовании этого сертификата» значение «Всегда доверять».
Переподписание приложения:codesign -f --deep -s <certname> /path/to/app
Убедитесь, что это сработало:codesign -dvvvv /path/to/app
Наслаждаться!
ОБНОВЛЕНИЕ: люди спрашивали меня, почему это «не работает» в macOS 10.14 «Мохаве». Теперь, когда я, наконец, обновился :-), вот что я узнал.
По сути, не используйте самозаверяющий сертификат для подписи кода. Вместо этого создайте сертификат, используя свой Apple ID в Xcode . Кратко повторим шаги:
В Xcode> «Настройки»> «Учетные записи» выберите свой идентификатор разработчика Apple, нажмите «Управление сертификатами», выберите «+» в левом нижнем углу, он предлагает вам вариант «Разработка Apple». Выберите это, это сделает сертификат для вас. Щелкнув по новому сертификату, удерживая нажатой клавишу Ctrl, вы можете экспортировать его (в .p12
формате), а с помощью open
-ing этот .p12
файл загружается в вашу цепочку ключей для входа.
Вы увидите, что этот сертификат действителен в течение года, «Выдан: Apple Worldwide Developer Relations Certification Authority». Я подозреваю, что это надежнее, чем самозаверяющий сертификат.
Теперь вы можете подписать свое приложение, как и раньше, с помощью codesign -f -s <apple_ID> /path/to/prog
. Я попробовал это с помощью простого двоичного файла (скомпилированного из hello.c
:-)) и его можно было проверить с помощью codesign -v
.
Я еще не пробовал это с пакетами Python, поэтому у меня нет советов людям, которые упомянули в своих комментариях, что это не может подписать «python.app».
Это относится к тому, подписано приложение или нет. Если он не подписан, предпочтение не будет запомнено.
Чтобы узнать, подписано ли приложение, сделайте это в Терминале:
cd path/to/your/app
codesign -vvv Eclipse.app/
Для Eclipse - мой говорит, что он вообще не подписан. Я не могу дальше комментировать, как подписать приложение, так как я не удосужился этого сделать, но этот ответ о суперпользователе охватывает это:
Если вы программируете на Go:
http.ListenAndServe("localhost:8080", ноль)
Вместо:
http.ListenAndServe(":8080", ноль)
Просто примечание: если вы используете виртуальную среду, обязательно подпишите приложение, которое используется для среды. Я знаю, что это очевидно, но, тем не менее, необходимо сказать.
Я получил помощь в ответе Саяна Мохсина, и я считаю, что он более общий, чем go
.
У меня была эта проблема с частью программного обеспечения, которому не нужно разрешать подключения извне, только с моей машины. Такое программное обеспечение не нужно подписывать, чтобы избежать этого предупреждения: его нужно только явно прослушивать localhost
.
В зависимости от вашей среды установка ограничения хоста будет выполняться по-разному. В моем случае я работал с nginx
сервером, и изменения его конфигурации с listen 8080
на listen 127.0.0.1:8080
было достаточно, чтобы это исправить.
Если это также ваш случай, вам обязательно следует проверить, предоставляет ли ваш сервер способ настройки ограничения хоста и установить его на localhost
или 127.0.0.1
.
Если вы ищете способ отключить это оповещение для симулятора iOS, вы можете использовать этот скрипт от Тома Содерлинга :
#!/bin/bash
# Script to disable the iOS Simulator app from showing the "Do you want the application xxxx to accept incoming network connections?" pop-up every time the app is run
echo "> Enter password to temporarily shut firewall off"
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
echo "> Add Xcode as a firewall exception"
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/MacOS/Xcode
echo "> Add iOS Simulator as a firewall exception"
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
echo "> Re-enable firewall"
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
exit 0
Обратите внимание, что вам придется запускать его снова после каждого перезапуска. Вы можете сделать это launchd
, следуя этим инструкциям . Обязательно укажите это:
<key>LaunchOnlyOnce</key>
<true/>
Я понимаю, что это старые вопросы и ответы, но это был первый поиск в Google, когда у меня была такая же проблема. Просто хотел добавить кое-что для других, которые могут приземлиться здесь.
Чтобы выполнить любую из описанных здесь команд codesign, необходимо установить инструменты командной строки xcode. Без них вы получите сообщение об ошибке:
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Чтобы это исправить, установите инструменты с помощью:
xcode-select install
Я бы прокомментировал пост Ахолла, но у меня нет на это очков репутации.
Моя ситуация связана с двумя копиями Eclipse, установленными на MacOS Mojave 10.14.5. Первая копия была авторизована с помощью брандмауэра MacOS. Вторая копия всегда будет отображать приглашение «принять входящие подключения». При выборе «Принять» сообщение будет отображаться после каждой перезагрузки, очевидно, настройки брандмауэра не были обновлены.
Решение заключалось в том, чтобы открыть Системные настройки MacOS -> Безопасность и конфиденциальность -> Брандмауэр, разблокировать экран, Параметры брандмауэра. Выберите Eclipse.app «Разрешить входящие подключения» и удалите его кнопкой «-». В следующий раз, когда я выбрал «Разрешить», приглашение Eclipse «принимать входящие подключения» было последним.
Я получаю это диалоговое окно (Canon ccpd) каждый раз после запуска моего компьютера. Откройте брандмауэр> безопасность и конфиденциальность> разблокируйте, чтобы включить изменения> нажмите кнопку «Включить скрытый режим»> нажмите кнопку «Блокировать все входящие подключения».
После этого больше не будет раздражающего диалогового окна драйвера принтера Canon.
Я попробовал все вышеперечисленное в Mac 10.13, и ничего не получилось.
В конце концов я написал сценарий, который запускался при выходе из системы, прикрепленный к хуку входа в систему, который отключал брандмауэр, поэтому при входе в систему ему больше не требовалось разрешение, а затем с помощью отложенного запуска запускался другой сценарий, который включал брандмауэр.
Все хорошо сейчас
Решением для меня было просто полностью отключить брандмауэр. Чрезвычайно распространено создание частей программного обеспечения с поддержкой Интернета, которые, конечно же, не подписаны, потому что вы компилируете их изначально.
Откройте прожектор с помощью CMD + пробел, найдите «конфиденциальность» и выберите «Безопасность и конфиденциальность». Затем перейдите на вкладку «Брандмауэр» и отключите там брандмауэр.
Мартин Маркончини
Питер Штибраны
Мартин Маркончини
Бен Вятт
Гуннар
Гринонлайн