如何摆脱防火墙的“接受传入连接”对话框?


101

我接受了这么多次,防火墙应该已经记住了。

例如,在调试模式下启动Java程序时,我在Eclipse中得到了它……有时此对话框仅在很短的时间内显示,如半秒,然后消失。我也将它用于iTunes(启用共享库时)和其他程序,即使我在防火墙首选项面板(广告设置)中列出了它们也是如此。


您正在使用什么版本的OSX?
Martin Marconcini 2010年

@马丁:添加了雪豹标签。我使用最新最好的1.6.4。
PeterŠtibraný10年

据我所知,这种行为很奇怪。防火墙会查看应用程序签名以识别它,因此应用程序中的任何更改都意味着它可能不再被识别,因此将引起新的提示。Leopard比10.6更容易使用此功能,但是根据您的说法,它仍然会发生。
Martin Marconcini 2010年

我过去经常在Snow Leopard上使用VirtualBox看到这种情况。我也想听听对此的解释。
Ben Wyatt

很烦人。在Eclipse中工作时,我每天都会看到几次弹出窗口。它只会显示不到一秒的时间。这在带有Eclipse Juno SR2的Mountain Lion上发生。
Gunnar 2013年

Answers:


12

这里有两个选项:

  1. 您可以在防火墙中选择“全部允许”,也可以将其关闭。
  2. 您可以从列表中删除应用程序,删除plist这些应用程序的文件,运行它们,然后将它们添加到列表中。plist负责许多行为,我敢打赌升级到操作系统或应用程序都可能导致“链接”中断。

关于plist文件... plist是一种特殊的文本文件,其中包含应用程序和其他资源(通常是OS)用于保留和重用运行应用程序所需信息的属性。plist是一种文件类型,具有多种用途,通常用于存储用户首选项,但从本质上讲,它是一个XML文件。您可以查看plist/Library/Caches和中所涉及的应用程序是否有任何缓存(通常是文件)/System/Library/Caches。也有其中一种,~/Library/Caches/但是当在那里乱丢东西时可能会发生坏事,所以就别管它了。系统出于各种原因进入这些文件夹,通常我会每月大约一次彻底清除列出的前两个文件夹。


您能否解释一下“删除这些应用程序的plist文件”是什么意思?
PeterŠtibraný10年

2
plist文件除其他外还包含应用程序设置(可以安全删除它们,但为防万一,请务必进行复制)。如果文件“消失”,则必须对任何可可应用程序进行编程以重新创建自己的plist。应用程序的plist通常位于/ Users / your_user / Library / Preferences中。这些文件以.plist扩展名结尾,并且通常具有以下名称:“ com.company.appname.plist”,例如:com.adobe.Phosothop.plist。您可以将它们移至桌面并启动应用程序以“重新创建”它。
Martin Marconcini 2010年

~上面的文件路径中的s 是否引用当前用户的主文件夹或根目录?

2
不赞成投票,因为在很多情况下这并不是一个选择。user465139的评论更合适。尽管仍然存在安全风险-至少比允许所有应用程序进/出要少。
sholsinger 2014年

1
在这一点上与@sholsinger达成共识,只是为Mavericks + PHPStorm绊脚石,而自签名替代方案既简单,快速又有效。这个plist业务有点混乱。
Alex Weber

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

我从来不需要使用这种方法来创建证书。

如果这样做没有帮助,请尝试不使用--deep斜杠:

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

请注意,只是为了使其更清楚:应用签名后,启动应用程序,最后一次接受传入的连接,然后退出并再次启动以验证请求是否消失。


5
我知道是因为我做到了吗?我不确定您要的是什么...使用该方法,我可以摆脱“接受传入通知”弹出窗口(尽管在签名后会最后一次询问您,然后再问一次) )。它对我来说适用于Spotify和AppCode。如果您需要信息,请阅读手册页?编辑:如果您有帮助,我正在使用优胜美地GM候选v3.0。
2014年

2
我想修改一个小细节:需要在/ path / to / app下寻址的应用程序必须包含.app结尾,即:/path/to/exampleapp.app。

4
@IconDaemon使用-after --sign表示使用“临时签名”;不需要使用该命令的证书。我不明白为什么这会与终端的使用相抵触。运行man codesign以查看说明。
2014年

3
简单,可行。比我接受的答案好得多,因为我不想删除plist文件。
贾斯汀

2
sudo codesign --force --sign - /path/to/application.app为我工作,但不适用于作者建议的版本。我想知道--deep斜线是不是一个问题。
Jose Alban

61

尽管RedYeti的链接很有用,但为了节省其他点击次数,让我回顾一下如何生成代码签名证书并将其用于代码(重新)签名:

  1. 创建自己的代码签名证书:

    • 在“钥匙串访问”中,“钥匙串访问”>“证书助手”>“创建证书”。这将启动证书助手:

    • 名称:在此处输入一些您可以记住的任意字符串。避免使用空格,否则codesign从命令行使用时,您需要转义证书名称。

    • 身份类型:自签名根

    • 证书类型:代码签名

    • 选中“让我覆盖默认设置”复选框,这非常重要

    • 序列号:1(只要证书名称/序列号组合是唯一的,就可以)

    • 有效期:3650(为您提供10年)

    • 您可以根据需要填写电子邮件,姓名等。

    • 密钥对信息:设置为RSA,2048位。恕我直言,这并不重要。

    • 从“密钥用法扩展名”到“主题备用名称扩展名”:接受默认值。

    • 位置:登录钥匙串。

    • 创建完成后,在登录钥匙串中设置为“始终信任”:右键单击证书,选择“获取信息”,然后在“信任”部分中,将“使用此证书时”设置为“始终信任”。

  2. 重新签名应用: codesign -f --deep -s <certname> /path/to/app

  3. 验证它是否有效: codesign -dvvvv /path/to/app

请享用!


4
谢谢!这是为我摆脱了防火墙设置对话框的唯一解决方案。我正在运行OSX 10.10优胜美地。
杰森

1
非常好!对于已经拥有证书的开发人员来说也很容易!
cwd

1
旁注:我已将有效期最大化到7300(天),即20年。我尝试一下,发现这是输入框可以接受的最大数量(至少在OSX Yosemite 10.10.3上)-很好,恭喜!
DavAlPi 2015年

ahall的答案要简单得多,并且在OS X 10.10上为我工作
n1000,2015年

在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


1
在ahall的答案给出解决方案的同时,此答案说明了原因。如果合并,那将是一个完美的答案。
not2savvy

3

不过,请注意,如果您使用的是虚拟环境,请确保对用于该环境的应用程序进行签名。我知道这很明显,但是仍然需要说。


非常感谢,但不是应用程序,我如何在conda环境中签名python版本(例如python3.6)?
敏捷豆

1

我很欣赏这是一个古老的问答,但是当我遇到同样的问题时,这对我来说是Google的第一击。只是想为可能落在这里的其他人添加一些东西。

为了执行此处概述的任何codesign命令,必须安装xcode命令行工具。没有这些,就会收到一条错误消息:

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

要解决此问题,请使用以下工具安装工具:

xcode-select install

我会在ahall的帖子上发表评论,但是我没有名声。


0

启动计算机后,我每次都会看到此对话框(Canon ccpd)。打开防火墙>安全和隐私>解锁以启用更改>单击按钮“启用隐身模式”>单击按钮“阻止所有传入连接”。

之后,Canon打印机驱动程序将不再显示恼人的对话框。


但是该应用程序无法正常工作...
not2精明'17

0

我在Mac 10.13中尝试了上述所有方法,但没有任何效果。

最后,我编写了一个脚本,该脚本在注销时附加到登录钩上,并关闭了防火墙,因此登录时不再需要权限,然后使用delaylauncher运行了另一个打开防火墙的脚本。

现在一切都好


欢迎询问不同!您可能希望共享脚本,以便其他用户也可以从您的解决方案中受益。
Glorfindel

0

我的情况涉及在MacOS Mojave 10.14.5上安装的Eclipse的两个副本。第一个副本已通过MacOS防火墙授权。第二个副本将始终显示“接受传入连接”提示。每次重新启动后,选择“接受”将继续显示该消息,显然防火墙设置未更新。

解决方案是打开MacOS系统偏好设置->安全和隐私->防火墙,解锁屏幕,防火墙选项。选择Eclipse.app“允许传入连接”,然后使用“-”按钮将其删除。下一次我在Eclipse中选择“允许”进入“接受传入连接”提示是最后一次。


-2

对我来说,解决方案是完全禁用防火墙。创建未经签名的基于Web的软件是非常普遍的,因为您是在本地进行编译的。

使用CMD +空格键打开聚光灯,然后搜索“隐私”,然后选择“安全和隐私”。然后切换到“防火墙”选项卡,并在那里禁用防火墙。


2
对于大多数人来说,这似乎是一个很差的解决方案,除非他们知道自己在做什么。防火墙的存在是有充分理由的-即使在Mac上也是如此。
RedYeti

我认为您的意思是“防火墙令人讨厌-即使在Mac上也是如此”。并非每个人都在机场的开放wifi网络上到处乱跑,他们的所有端口都可以从恶意软件分发站点下载病毒。我的回答正确地解决了这个问题,并且绕过了Apple令人讨厌的弹出框。每次您重新编译使用网络的二进制文件时,您都会得到绝对不可原谅的弹出窗口。弹出窗口只是Apple试图给未受过教育的人们喂奶的另一种烦人的方式,同时让开发人员感到干and。
anon58192932

1
我同意-并非每个人都没有受过教育。但是,在这个问题上,绝大多数人都是。即使是不熟悉这些的人,也应该比拿出主要的网络安全组件更好地了解。至少,警告人们可能的后果会很好。只需关闭防火墙,我就不会将其视为“修复程序”,而是一个非常棘手的解决方法。
RedYeti
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.