Как избавиться от брандмауэра «Принять входящие соединения»?

101

Я принимал это так много раз, что брандмауэр уже должен помнить это.

Например, я получаю его для Eclipse при запуске моих java-программ в режиме отладки ... иногда это диалоговое окно отображается очень коротко, например полсекунды, и исчезает. Я также получаю его для iTunes (когда я включаю общий доступ к своей библиотеке) и других программ, даже если они перечислены в панели настроек брандмауэра (дополнительные настройки).

Петр Штибраны
источник
Какую версию OSX вы используете?
Мартин Маркончини,
@Martin: добавлен тег снежного барса. Я использую последнюю и лучшую 1.6.4.
Питер Штибраны
Поведение очень странно, насколько мне известно. Брандмауэр просматривает подпись приложения, чтобы распознать ее, поэтому любое изменение в приложении означает, что оно может больше не распознаваться и, следовательно, вызовет новое приглашение. Леопард был более склонен к этому, чем 10,6, однако это все еще происходит из того, что вы говорите.
Мартин Маркончини
Я имел обыкновение видеть это все время с VirtualBox на Snow Leopard. Я хотел бы услышать объяснение этому также.
Бен Уайатт
Очень надоедливый. Я вижу всплывающее окно пару раз в день, работая в Eclipse. Это появляется только в течение секунды или около того. Это происходит на Mountain Lion с Eclipse Juno SR2.
Гуннар

Ответы:

12

Здесь есть два варианта:

  1. Вы можете просто выбрать «Разрешить все» в брандмауэре или просто отключить его.
  2. Вы можете удалить приложения из списка, удалить plistфайл для этих приложений, запустить их, а затем добавить их в список. Ответственность за многие варианты поведения несет plist, и я готов поспорить, что либо обновление ОС, либо приложение может привести к разрыву «ссылки».

О plistфайлах ... plist - это специальный вид текстового файла, который содержит свойства приложения и других ресурсов, обычно ОС, для хранения и повторного использования информации, необходимой для запуска приложения. plistявляется типом файла и имеет много применений, обычно хранит пользовательские настройки, но, по сути, это файл XML. Вы можете посмотреть, есть ли какие-либо кеши, которые обычно являются plistфайлами, для рассматриваемых приложений в /Library/Cachesи /System/Library/Caches. Есть и одна ~/Library/Caches/вещь, но плохие вещи могут случиться, когда они осматривают все вокруг, так что оставьте это в покое. Система входит в эти папки по разным причинам, и я обычно вычищаю первые две папки, которые я перечислял полностью, примерно раз в месяц.

Филип Реган
источник
Не могли бы вы объяснить, что вы подразумеваете под "удалить файл plist для этих приложений"?
Питер Штибраны
2
файлы plist содержат настройки приложения среди прочего (и их безопасно удалить, но всегда делайте копию на всякий случай). Любое приложение Какао должно быть запрограммировано на воссоздание своего собственного списка, если файл «исчезнет». Список приложений обычно находится в / Users / your_user / Library / Preferences. Файлы заканчиваются расширением .plist и обычно имеют имена, например: «com.company.appname.plist», например: com.adobe.Phosothop.plist. Вы можете переместить их на рабочий стол и запустить приложение для его «воссоздания».
Мартин Маркончини
Указывает ли ~s в пути к файлам ссылку на домашнюю папку текущего пользователя или корневой каталог?
2
Во многих случаях это не вариант. Комментарий user465139 более уместен. Хотя это по-прежнему угроза безопасности - это по крайней мере меньше, чем позволить всем приложениям входить / выходить.
Шолзингер
1
Согласитесь с @sholsinger по этому вопросу, просто споткнувшись об этом для Mavericks + PHPStorm, и альтернатива самоподписания проста, быстра и работает. Этот бизнес в стиле "плист" довольно грязный.
Алекс Вебер
61
sudo codesign --force --deep --sign - /path/to/application.app

Мне никогда не приходилось создавать сертификат с использованием этого метода.

Если это не поможет, попробуйте без --deepи без косой черты:

sudo codesign --force --sign - /path/to/application.app

Обратите внимание, просто для ясности: после применения подписи, запустите приложение, примите входящие подключения в последний раз, затем выйдите и запустите снова, чтобы убедиться, что запрос пропал.

зал
источник
5
Я знаю, потому что я сделал это? Я не уверен, что именно вы запрашиваете ... с помощью этого метода я смог избавиться от всплывающего окна "принимать входящие уведомления" (хотя после подписания вам будет предложено в последний раз, а затем не более ). У меня это работает для Spotify и AppCode. Если вам нужна информация, прочитайте справочную страницу? редактировать: я использую Yosemite GM Candidate v3.0, если это поможет вам.
ahall
2
Я хотел бы изменить одну небольшую деталь: приложение, к которому необходимо обратиться в / path / to / app, должно содержать окончание .app , то есть: /path/to/exampleapp.app.
4
@IconDaemon Использование -после --signозначает, что используется «специальная подпись»; нет необходимости иметь сертификат для использования этой команды. Я не понимаю, почему это противоречило бы использованию терминала. Беги, man codesignчтобы увидеть объяснение.
Майк
3
Просто и работает. Намного лучше, чем принятый ответ, так как я не хочу удалять plist-файлы.
Джастин
2
sudo codesign --force --sign - /path/to/application.appработал для меня, но не вариант, предложенный автором. Интересно, --deepбыла ли проблема с главной чертой?
Хосе Албан
61

Хотя ссылка RedYeti полезна, просто для того, чтобы сэкономить несколько кликов для других, позвольте мне напомнить, как создать сертификат для подписи кода и использовать его для (повторной) подписи кода:

  1. Создайте свой собственный сертификат подписи кода:

    • В Доступе Цепочки для ключей, Доступ Цепочки для ключей> Помощник Сертификата> Создать сертификат. Это запускает Ассистент Сертификата:

    • Имя: введите здесь произвольную строку, которую вы можете запомнить. Избегайте пробелов, иначе вам потребуется экранировать имя сертификата при использовании codesignиз командной строки.

    • Тип удостоверения: самоподписанный корень

    • Тип сертификата: Кодовая подпись

    • Установите флажок «Позвольте мне переопределить значения по умолчанию», это очень важно

    • Серийный номер: 1 (ОК, если комбинация имени сертификата / серийного номера уникальна)

    • Срок действия: 3650 (дает 10 лет)

    • Адрес электронной почты, имя и т. Д. Заполните, как хотите.

    • Информация о паре ключей: установлена ​​в RSA, 2048 бит. ИМХО не имеет большого значения.

    • От «Расширения использования ключа» до «Расширения альтернативного имени субъекта»: примите значения по умолчанию.

    • Расположение: логин брелок.

    • После того, как он создан, установите «Всегда доверять» в цепочке ключей входа в систему: щелкните правой кнопкой мыши сертификат, выберите «Получить информацию», а в разделе «Доверие» установите «При использовании этого сертификата» значение «Всегда доверять».

  2. Повторная подпись приложения: codesign -f --deep -s <certname> /path/to/app

  3. Убедитесь, что это сработало: codesign -dvvvv /path/to/app

Наслаждайтесь!

ОБНОВЛЕНИЕ: Люди спрашивали меня, почему это не работает в macOS 10.14 «Мохаве». Теперь, когда я наконец обновился :-), вот что я узнал.

По сути, не используйте самозаверяющий сертификат для подписи кода. Создайте сертификат, используя свой Apple ID в XCode вместо этого. Чтобы кратко повторить шаги:

В Xcode> Настройки> Учетные записи, выберите свой идентификатор разработчика Apple, нажмите «Управление сертификатами», выберите «+» в левом нижнем углу, он предлагает вам опцию «Apple Development». Выберите это, это сделает сертификат для вас. Нажав Ctrl-клик по новому сертификату, вы можете экспортировать его (в .p12формате) и, openзагрузив этот .p12файл, загрузить в свою цепочку для ключей входа в систему.

Вы увидите, что этот сертификат действителен в течение года, «выданного: Apple Worldwide Certification Authority». Я подозреваю, что это заслуживает доверия, чем самозаверяющий сертификат.

Теперь вы можете подписать свое приложение, как и раньше, с помощью codesign -f -s <apple_ID> /path/to/prog. Я попробовал это с простым двоичным файлом (скомпилировано из hello.c:-)), и это можно проверить с помощью codesign -v.

Я еще не пробовал это с пакетами Python, поэтому я не советую людям, которые упомянули в своих комментариях, что это не может подписывать "python.app".

Ларикс Децидуа
источник
4
Спасибо! Это единственное решение, которое избавило меня от диалогов с брандмауэром. Я использую OSX 10.10 Yosemite.
Джейсон
1
очень хорошо! Легко для разработчиков, которые уже имеют сертификат!
cwd
1
примечание: я увеличил срок действия до 7300 (дней), то есть 20 лет. С некоторой попыткой я обнаружил, что это максимальное число, которое принимает поле ввода (по крайней мере, на OSX Yosemite 10.10.3) - очень хорошо, слава!
DavAlPi
Ответ Ахалла намного проще и работал для меня на OS X 10.10
n1000
У меня не работало на OS X 10.11.1 (15B42)
suzanshakya
15

Это относится к тому, подписано ли приложение или нет. Если он не подписан, предпочтение не будет запомнено.

Чтобы увидеть, подписано ли приложение, сделайте это в Терминале:

cd path/to/your/app
codesign -vvv Eclipse.app/

Для Eclipse - мой говорит, что он вообще не подписан. Я не могу комментировать дальше, как подписать приложение, так как я не удосужился сделать это, но этот ответ на суперпользователя покрывает это:

https://superuser.com/questions/100013/why-does-the-mac-os-x-firewall-dialog-recurringly-pop-up-and-disappear-by-itself#300841

RedYeti
источник
1
Ответ Ахалла дает решение, но этот ответ объясняет почему. Если объединить, это будет идеальный ответ.
not2savvy
3

Просто обратите внимание: если вы используете виртуальную среду, обязательно подпишите приложение, которое используется для этой среды. Я знаю, что это очевидно, но все же нужно было сказать.

flyboy777
источник
большое спасибо, но вместо приложения, как бы я подписал версию Python (скажем, python3.6) в среде conda?
Agile Bean
1

Я ценю, что это старый Q & A, но это был первый хит на Google для меня, когда у меня была такая же проблема. Просто хотел добавить что-то для других, что может приземлиться здесь.

Для выполнения любой из перечисленных здесь команд кодовых знаков необходимо установить инструменты командной строки xcode. Без них можно получить сообщение об ошибке:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

Чтобы это исправить, установите инструменты с:

xcode-select install

Я бы прокомментировал сообщение Ахалла, но у меня нет очков репутации, чтобы сделать это.

Пит
источник
0

Я получал это диалоговое окно (Canon ccpd) каждый раз после запуска компьютера. Откройте брандмауэр> Безопасность и конфиденциальность> разблокировать, чтобы включить изменения> нажмите кнопку «Включить скрытый режим»> нажмите кнопку «Блокировать все входящие подключения».

После этого больше не будет раздражающего диалогового окна драйвера принтера Canon.

Док Олмо
источник
Но приложение не будет работать ...
not2savvy
0

Я попробовал все вышеизложенное в Mac 10.13, и ничего не получалось.

В конце я написал скрипт, который запускался при выходе из системы, подключенный к хуку входа, который отключал брандмауэр, поэтому при входе в систему ему больше не требовалось разрешение, а затем с помощью delayedlauncher запускался другой скрипт, который включал брандмауэр.

Все хорошо сейчас

Эш Дин Уэллс
источник
Добро пожаловать, чтобы спросить другого! Возможно, вы захотите поделиться своим сценарием, чтобы другие пользователи также могли получить выгоду от вашего решения.
Глорфиндель
0

В моей ситуации используются две копии Eclipse, установленные на MacOS Mojave 10.14.5. Первая копия была авторизована с помощью брандмауэра MacOS. Вторая копия всегда будет отображать приглашение «принять входящие соединения». Выбор «Принять» продолжит отображать сообщение после каждой перезагрузки, по-видимому, настройки брандмауэра не обновлялись.

Решением было открыть Системные настройки MacOS -> Безопасность и конфиденциальность -> Брандмауэр, разблокировать экран, Параметры брандмауэра. Выберите Eclipse.app «Разрешить входящие подключения» и удалите его кнопкой «-». В следующий раз, когда я выбрал «Разрешить» для Eclipse, приглашение «принимать входящие подключения» было последним.

Les Grieve
источник
-2

Решением для меня было просто отключить брандмауэр. Чрезвычайно распространено создание веб-частей программного обеспечения, которые, конечно, не подписаны, потому что вы их компилируете изначально.

Откройте центр внимания с помощью CMD + пробел, выполните поиск «конфиденциальность» и выберите «Безопасность и конфиденциальность». Затем перейдите на вкладку «Брандмауэр» и отключите там брандмауэр.

anon58192932
источник
2
Это кажется довольно плохим решением для большинства людей, если они не знают, что делают. Брандмауэры существуют по уважительной причине - даже на Mac.
RedYeti
Я думаю, что вы имели в виду «Брандмауэры раздражают - даже на Mac». Не все необразованные люди бегают по открытым wifi-сетям в аэропортах со всеми открытыми портами, загружая вирусы с сайтов распространения вредоносных программ. Мой ответ правильно решает проблему и обходит тупо раздражающие всплывающие окна Apple. Каждый раз, когда вы перекомпилируете двоичный файл, который использует сеть, вы получаете всплывающее окно, которое абсолютно непростительно. Всплывающее окно - это еще один раздражающий способ, которым Apple пытается воспитывать необразованных людей, оставляя разработчиков в напряжении.
anon58192932
1
Я согласен - не все необразованные. Однако на эту тему подавляющее большинство людей. Даже те, кто не должен знать, лучше, чем вынуть основной компонент сетевой безопасности. По крайней мере, предупреждение людей о возможных последствиях было бы хорошо. Простое отключение брандмауэра я бы не считал «исправлением», а очень хакерским обходным путем.
RedYeti