Wie entferne ich den Firewall-Dialog "Eingehende Verbindungen akzeptieren"?

101

Ich habe das so oft akzeptiert, dass sich die Firewall daran erinnern sollte.

Zum Beispiel bekomme ich es für Eclipse, wenn ich meine Java-Programme im Debugging-Modus starte ... manchmal wird dieser Dialog nur sehr kurz angezeigt, etwa eine halbe Sekunde, und verschwindet. Ich bekomme es auch für iTunes (wenn ich die Freigabe meiner Bibliothek aktiviere) und andere Programme, obwohl ich sie im Bereich "Firewall-Einstellungen" (Adv. Einstellungen) aufgelistet habe.

Peter Štibraný
quelle
Welche OSX-Version verwenden Sie?
Martin Marconcini
@Martin: Schneeleopard-Tag hinzugefügt. Ich benutze die neueste und beste 1.6.4.
Peter Štibraný
Meines Wissens nach ist das Verhalten sehr merkwürdig. Die Firewall überprüft die App-Signatur, um sie zu erkennen. Jede Änderung in der App bedeutet, dass sie möglicherweise nicht mehr erkannt wird und daher eine neue Eingabeaufforderung auslöst. Leopard war dafür anfälliger als 10.6, aber es passiert immer noch, was Sie sagen.
Martin Marconcini
Ich habe das immer mit VirtualBox auf Snow Leopard gesehen. Ich würde gerne auch eine Erklärung dafür hören.
Ben Wyatt
Sehr nervig. Ich sehe das Popup mehrmals am Tag, während ich in Eclipse arbeite. Es wird nur für ungefähr eine Sekunde angezeigt. Dies geschieht auf Mountain Lion mit Eclipse Juno SR2.
Gunnar

Antworten:

12

Hier gibt es zwei Möglichkeiten:

  1. Sie können einfach "Allow All" in Ihrer Firewall auswählen oder sie einfach ausschalten.
  2. Sie können die Apps aus der Liste entfernen, die plistDatei für diese Apps löschen , sie ausführen und sie dann der Liste hinzufügen. Die plist ist für viele Verhaltensweisen verantwortlich und ich bin bereit zu wetten, dass entweder ein Upgrade auf das Betriebssystem oder die App dazu führen kann, dass die "Verbindung" unterbrochen wird.

Über plistDateien ... ist ein plist eine besondere Art von Textdatei, die die Anwendung enthält Eigenschaften und andere Ressourcen, in der Regel das Betriebssystem, die Verwendung zu halten und Wiederverwendung erforderlichen Informationen , um die Anwendung auszuführen. plistist ein Dateityp, der viele Verwendungszwecke hat und in der Regel Benutzereinstellungen speichert. Im Wesentlichen handelt es sich jedoch um eine XML-Datei. Sie können nachsehen, ob plistfür die betreffenden Anwendungen in /Library/Cachesund Caches vorhanden sind, bei denen es sich normalerweise um Dateien handelt /System/Library/Caches. Es gibt auch eine in, ~/Library/Caches/aber schlechte Dinge können passieren, wenn man dort herumspielt, also lass es einfach in Ruhe. Das System durchsucht diese Ordner aus einer Vielzahl von Gründen. In der Regel werden die ersten beiden von mir aufgelisteten Ordner einmal im Monat vollständig gelöscht.

Philip Regan
quelle
Können Sie bitte erklären, was Sie unter "Löschen der Plist-Datei für diese Apps" verstehen?
Peter Štibraný
2
die plist-dateien enthalten unter anderem die einstellungen der anwendung (und es ist sicher, sie zu löschen, aber immer eine kopie zu erstellen, nur für den fall). Jede Cocoa-App muss so programmiert werden, dass sie eine eigene Liste erstellt, falls die Datei „verschwindet“. Die Liste für Apps befindet sich normalerweise unter / Users / your_user / Library / Preferences. Die Dateien enden mit der Erweiterung .plist und haben normalerweise Namen wie: "com.company.appname.plist", zB: com.adobe.Phosothop.plist. Sie können sie auf Ihren Desktop verschieben und die Anwendung starten, um sie neu zu erstellen.
Martin Marconcini
~Verweisen die s in den Dateipfaden oben auf den Basisordner des aktuellen Benutzers oder das Stammverzeichnis?
2
Abgestimmt, da dies in vielen Fällen nicht wirklich eine Option ist. Der Kommentar von user465139 ist angemessener. Auch wenn dies immer noch ein Sicherheitsrisiko darstellt, ist es immerhin weniger als das Zulassen aller Apps.
Sholsinger
1
stimme mit @sholsinger überein, nur für Mavericks + PHPStorm darüber zu stolpern und die selbstsignierende Alternative ist einfach, schnell und funktioniert. Dieses Plistengeschäft ist ein bisschen chaotisch.
Alex Weber
61
sudo codesign --force --deep --sign - /path/to/application.app

Ich musste noch nie ein Zertifikat mit dieser Methode erstellen.

Wenn das nicht hilft, versuchen Sie es ohne --deepund ohne den abschließenden Schrägstrich:

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

Hinweis, um es klarer zu machen: Nachdem Sie die Signatur angewendet haben, starten Sie die App, akzeptieren Sie die eingehenden Verbindungen ein letztes Mal, beenden Sie sie und starten Sie sie erneut, um sicherzustellen, dass die Anforderung nicht mehr vorliegt.

eine Halle
quelle
5
Ich weiß, weil ich es getan habe? Ich bin mir nicht sicher, wonach Sie genau fragen ... Mit dieser Methode konnte ich das Popup "Eingehende Benachrichtigungen akzeptieren" entfernen (obwohl Sie nach der Unterzeichnung ein letztes Mal gefragt werden und dann nicht mehr ). Es hat bei mir für Spotify und AppCode funktioniert. Wenn Sie Informationen benötigen, lesen Sie die Manpage? Bearbeiten: Ich verwende Yosemite GM Candidate v3.0, wenn Ihnen das hilft.
Ahall
2
Ich möchte ein kleines Detail ändern: Die App, die unter / path / to / app angesprochen werden muss, muss die Endung .app enthalten , dh: /path/to/exampleapp.app.
4
@IconDaemon Die Verwendung von -after --signbedeutet, dass "Ad-hoc-Signierung" verwendet wird. Es ist kein Zertifikat erforderlich, um diesen Befehl zu verwenden. Ich verstehe nicht, warum dies der Verwendung des Terminals widersprechen würde. Renne man codesign, um die Erklärung zu sehen.
Mike
3
Einfach und funktioniert. Viel besser als angenommene Antwort, da ich plist-Dateien nicht löschen möchte.
Justin
2
sudo codesign --force --sign - /path/to/application.apphat bei mir geklappt, aber nicht die vom autor vorgeschlagene variante. Ich frage mich, ob --deepoder der führende Schrägstrich ein Problem war.
Jose Alban
61

Obwohl der Link von RedYeti nützlich ist, lassen Sie mich, um nur ein paar Klicks für andere zu speichern, noch einmal zusammenfassen, wie ein Code-Signier-Zertifikat erstellt und zum (erneuten) Signieren von Code verwendet wird:

  1. Erstellen Sie Ihr eigenes Code Signing Zertifikat:

    • In Schlüsselbund, Schlüsselbund> Zertifikat-Assistent> Zertifikat erstellen. Dies startet den Certificate Assistant:

    • Name: Geben Sie hier eine beliebige Zeichenfolge ein, an die Sie sich erinnern können. Vermeiden Sie Leerzeichen, andernfalls müssen Sie den Namen des Zertifikats in der Befehlszeile maskieren codesign.

    • Identitätstyp: Self Signed Root

    • Zertifikatstyp: Codesignatur

    • Aktivieren Sie das Kontrollkästchen "Standardeinstellungen überschreiben". Dies ist sehr wichtig

    • Seriennummer: 1 (OK, solange die Kombination aus Zertifikatsname / Seriennummer eindeutig ist)

    • Gültigkeitsdauer: 3650 (gibt Ihnen 10 Jahre)

    • E-Mail, Name usw. nach Belieben ausfüllen.

    • Schlüsselpaarinfo: Auf RSA, 2048 Bit eingestellt. Ist meiner Meinung nach nicht wirklich wichtig.

    • Von "Erweiterung der Schlüsselverwendung" bis "Erweiterung des alternativen Antragstellernamens": Übernehmen Sie die Standardeinstellungen.

    • Ort: Login-Schlüsselbund.

    • Sobald das Zertifikat erstellt wurde, setzen Sie es im Anmeldeschlüsselbund auf "Immer vertrauen": Klicken Sie mit der rechten Maustaste auf das Zertifikat, wählen Sie "Informationen abrufen" und setzen Sie im Abschnitt "Vertrauen" die Option "Bei Verwendung dieses Zertifikats" auf "Immer vertrauen".

  2. App neu signieren: codesign -f --deep -s <certname> /path/to/app

  3. Stellen Sie sicher, dass es funktioniert hat: codesign -dvvvv /path/to/app

Genießen!

Laryx Decidua
quelle
4
Danke! Dies ist die einzige Lösung, die die Firewall-Dialoge für mich beseitigt hat. Ich verwende OSX 10.10 Yosemite.
Jason
1
Sehr schön! einfach auch für Entwickler, die bereits ein Zertifikat haben!
KWD
1
Anmerkung: Ich habe die Gültigkeitsdauer auf 7300 (Tage), also 20 Jahre, maximiert. Ich habe bei einigen Versuchen festgestellt, dass dies die maximale Anzahl ist, die das Eingabefeld akzeptiert (zumindest unter OSX Yosemite 10.10.3) - sehr gut, ein dickes Lob!
DavAlPi
Die Antwort von ahall ist viel einfacher und hat für mich unter OS X 10.10
n1000
Funktionierte nicht für mich unter OS X 10.11.1 (15B42)
suzanshakya
15

Dies bezieht sich darauf, ob die App signiert ist oder nicht. Wenn es nicht signiert ist, wird die Voreinstellung nicht gespeichert.

So überprüfen Sie, ob eine App signiert ist:

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

Für Eclipse - meins sagt, dass es überhaupt nicht signiert ist. Ich kann mich nicht weiter dazu äußern, wie ich die App signieren soll, da ich mich nicht darum gekümmert habe, aber diese Antwort auf Superuser behandelt sie:

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

RedYeti
quelle
1
Während die Antwort von ahall eine Lösung gibt, erklärt diese Antwort, warum. Wenn es zusammengeführt würde, wäre es die perfekte Antwort.
not2savvy
3

Wenn Sie jedoch eine virtuelle Umgebung verwenden, müssen Sie die App signieren, die für die Umgebung verwendet wird. Ich weiß, dass dies offensichtlich ist, musste aber trotzdem gesagt werden.

flyboy777
quelle
Vielen Dank, aber wie würde ich anstelle einer App eine Python-Version (z. B. python3.6) in einer Conda-Umgebung signieren?
Agile Bean
1

Ich weiß zu schätzen, dass dies eine alte Frage und Antwort ist, aber es war für mich der erste Treffer auf Google, als ich das gleiche Problem hatte. Ich wollte nur etwas für andere hinzufügen, die hier landen könnten.

Um einen der hier beschriebenen Codesign-Befehle ausführen zu können, müssen die Befehlszeilentools von xcode installiert sein. Ohne diese bekommt man eine Fehlermeldung:

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

Um dies zu beheben, installieren Sie die Tools mit:

xcode-select install

Ich hätte ahalls Post kommentiert, aber ich habe nicht die Reputationspunkte, um das zu tun.

Pete
quelle
0

Ich habe dieses Dialogfeld (Canon ccpd) jedes Mal, nachdem ich meinen Computer gestartet habe. Öffnen Sie die Firewall> Sicherheit und Datenschutz> Entsperren, um Änderungen zu aktivieren> klicken Sie auf die Schaltfläche "Stealth-Modus aktivieren"> klicken Sie auf die Schaltfläche "Alle eingehenden Verbindungen blockieren".

Kein irritierendes Dialogfeld des Canon-Druckertreibers mehr.

Doc Olmo
quelle
Aber die App wird nicht funktionieren ...
not2savvy
0

Ich habe das alles in Mac 10.13 ausprobiert und nichts hat funktioniert.

Am Ende habe ich ein Skript geschrieben, das beim Abmelden ausgeführt wurde und an einen Anmelde-Hook angehängt war, der die Firewall deaktiviert hat. Wenn ich mich also angemeldet habe, benötigte ich keine Berechtigung mehr. Dann habe ich mit delayedlauncher ein anderes Skript ausgeführt, das die Firewall aktiviert hat.

Alles gut jetzt

Ash Dean Wells
quelle
Willkommen bei Ask Different! Möglicherweise möchten Sie Ihr Skript freigeben, damit auch andere Benutzer von Ihrer Lösung profitieren können.
Glorfindel
0

Meine Situation betrifft zwei Kopien von Eclipse, die unter MacOS Mojave 10.14.5 installiert sind. Die erste Kopie wurde mit der MacOS-Firewall autorisiert. Die zweite Kopie würde immer die Eingabeaufforderung "Eingehende Verbindungen akzeptieren" anzeigen. Wenn Sie "Akzeptieren" auswählen, wird die Meldung nach jedem Neustart weiterhin angezeigt, anscheinend wurde die Firewall-Einstellung nicht aktualisiert.

Die Lösung bestand darin, die MacOS-Systemeinstellungen -> Sicherheit und Datenschutz -> Firewall zu öffnen, den Bildschirm zu entsperren und die Firewall-Optionen aufzurufen. Wählen Sie Eclipse.app "Eingehende Verbindungen zulassen" und entfernen Sie diese mit der Schaltfläche "-". Das nächste Mal, wenn ich "Zulassen" für die Eingabeaufforderung "Eingehende Verbindungen akzeptieren" von Eclipse auswählte, war dies das letzte Mal.

Les Grieve
quelle
-2

Die Lösung für mich bestand darin, die Firewall komplett zu deaktivieren. Es ist äußerst verbreitet, webfähige Software-Teile zu erstellen, die natürlich nicht signiert sind, weil Sie sie nativ kompilieren.

Öffnen Sie den Scheinwerfer mit CMD + Leertaste und suchen Sie "Datenschutz" und wählen Sie "Sicherheit und Datenschutz". Wechseln Sie dann in die Registerkarte "Firewall" und deaktivieren Sie dort die Firewall.

anon58192932
quelle
2
Das scheint für die meisten Menschen eine ziemlich schlechte Lösung zu sein, es sei denn, sie wissen, was sie tun. Firewalls gibt es aus gutem Grund - auch auf Macs.
RedYeti
Ich denke du meintest "Firewalls sind nervig - auch auf Macs". Nicht jeder ist ungebildet, wenn er auf Flughäfen in offenen WLAN-Netzwerken herumläuft und alle Ports offen sind, um Viren von Websites zur Verbreitung von Malware herunterzuladen. Meine Antwort behebt das Problem richtig und umgeht Apples dumm nervige Popup-Boxen. Jedes Mal, wenn Sie eine Binärdatei neu kompilieren, die das Netzwerk verwendet, erhalten Sie das Popup, das absolut unentschuldbar ist. Das Popup ist nur eine weitere ärgerliche Art und Weise, wie Apple versucht, ungebildete Menschen zu versorgen, während Entwickler hoch und trocken bleiben.
anon58192932
1
Ich stimme zu - nicht jeder ist ungebildet. Zu diesem Thema ist jedoch die überwiegende Mehrheit der Menschen. Selbst diejenigen, die dies nicht tun, sollten besser wissen, als die Hauptkomponente der Netzwerksicherheit herauszunehmen. Zumindest wäre es gut gewesen, die Menschen vor den möglichen Konsequenzen zu warnen. Einfach die Firewall ausschalten, würde ich nicht als "Fehlerbehebung", sondern als sehr umständliche Abhilfe betrachten.
RedYeti