您希望应用程序接受传入的网络连接吗?

时间:2013-07-08 13:18:37

标签: c macos code-signing firewall

我有两个C二进制文件试图打开网络连接进行通信。

这是用于外部通信。当我第一次运行时,OS X'防火墙会弹出标题中给出的消息。我怎么能摆脱这个?

我怀疑这与代码签名有关?如何对这个二进制文件进行代码签名?

基本上我必须在一台Mac机器上构建这个二进制文件,然后分发到app app外面。

如果机器中启用了OS X防火墙,如何摆脱防火墙弹出?

3 个答案:

答案 0 :(得分:6)

您可以通过自行签署违规应用程序二进制文件来解决此问题。

Disclaimer: Signing an application yourself will make an application appear more
secure to the operating system, when in reality it isn’t. Only sign applications
that you are 100% sure are not spyware or otherwise malicious. If you have any
doubts, just uninstall/reinstall.

第1部分:创建签名身份

我想要的解决方案 - 自己签署应用程序 - 要求我创建一个签名身份,也称为签名证书。这很容易做到:

  1. 打开应用程序>公用事业>钥匙串访问。
  2. 从Keychain Access菜单中,选择Certificate Assistant>创建证书。
  3. 填写证书的名称。此名称显示在Keychain Access实用程序中作为证书的名称。这也是您在引用此证书时将使用的名称。就个人而言,我使用了“我的签名身份”这个名字。
  4. 从“证书类型”菜单中选择“代码签名”。
  5. 从“类型”弹出菜单中选择“自签名根”。
  6. 选中“让我覆盖默认值”复选框。
  7. 点击继续。
  8. 指定证书的序列号。只要您没有其他具有相同名称和序列号的证书,任何号码都可以。
  9. 点击继续。
  10. 填写证书的信息。您可以使用真实或虚假数据,我个人使用真实数据。
  11. 点击继续。
  12. 接受其余对话框的默认值。
  13. 完成后,您将在Keychain Access中看到您的证书。验证您选择的名称,然后完成此步骤。做得好!

    第2步:(重新)签署您的申请

    现在您必须签署您的申请。为此,请再次打开终端并使用以下命令:

    codesign -s "My Signing Identity" -f /path/to/your/binary/app
    

    将出现一个对话框,单击“允许”。

    现在再次启动您的应用程序。您将最后一次获得接受传入连接对话框。点击“允许”。

    enter image description here

    从现在开始,你再也不应该收到警告了!现在可以享受防火墙的安全性,而不必不断点击“允许”。

    信用:作为此更新和带注释的解决方案指南的起始位置的原始来源是http://silvanolte.com/blog/2011/01/18/do-you-want-the-application-to-accept-incoming-network-connections/

答案 1 :(得分:1)

我试图将此解决方案应用于修复Arduino OTA使用的python,我发现另一个解决方案描述自我签名的应用程序,声明$(哪个python)作为签名的文件路径,但在我的情况下解决了在/ usr / bin中/ Python的。自签名这不仅要求我进入Rootless模式以允许写入/ usr / bin,但是当我回去测试它时,python仍然是STILL请求允许传入连接的权限!

正确的自签名python文件(至少在我的情况下)/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app

一旦我自行签署了这个正确的文件路径,Arduino OTA进程就不再需要我点击允许传入连接 - Hoorah!

希望能有所帮助。

答案 2 :(得分:0)

在我的情况下,当我将MacOS更新为10.15 Cataline之后从PyCharm运行Python项目时,出现此警报。我用

修复了它
codesign -vvv /Applications/PyCharm.app/