Ich habe dies so oft akzeptiert, dass sich die Firewall bereits daran erinnern sollte.
Möchten Sie, dass die Anwendung „AppName.app“ eingehende Netzwerkverbindungen akzeptiert?
Durch Klicken auf Verweigern kann das Verhalten der Anwendung eingeschränkt werden. Diese Einstellung kann im Bereich „Firewall“ der Systemeinstellung „Sicherheit“ geändert werden.
verweigern | Erlauben
Zum Beispiel bekomme ich es für Eclipse, wenn ich meine Java-Programme im Debugging-Modus starte. Manchmal wird dieser Dialog nur ganz kurz, etwa eine halbe Sekunde, angezeigt und verschwindet. Ich bekomme es auch für iTunes (wenn ich die Freigabe meiner Bibliothek aktiviere) und andere Programme, obwohl ich sie im Firewall-Einstellungsfeld (erw. Einstellungen) aufgelistet habe.
Hier gibt es zwei Möglichkeiten:
plist
Datei für diese Apps löschen, sie ausführen und sie dann zur 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 der "Link" unterbrochen wird.Informationen zu Dateien... Eine Plist plist
ist eine spezielle Art von Textdatei, die Eigenschaften enthält, die die Anwendung und andere Ressourcen, typischerweise das Betriebssystem, verwenden, um Informationen zu speichern und wiederzuverwenden, die zum Ausführen der Anwendung erforderlich sind. plist
ist ein Dateityp und hat viele Verwendungsmöglichkeiten, typischerweise zum Speichern von Benutzereinstellungen, aber im Wesentlichen ist es eine XML-Datei. Sie können nachsehen, ob es Caches, bei denen es sich in der Regel um plist
Dateien handelt, für die betreffenden Anwendungen in /Library/Caches
und gibt /System/Library/Caches
. Es gibt auch einen ~/Library/Caches/
drin, aber wenn man dort herumfummelt, können schlimme Dinge passieren, also lass es einfach in Ruhe. Das System geht aus einer Vielzahl von Gründen in diese Ordner, und normalerweise räume ich die ersten beiden Ordner, die ich aufgelistet habe, etwa einmal im Monat vollständig auf.
~
s in den obigen Dateipfaden auf den Basisordner des aktuellen Benutzers oder das Stammverzeichnis?~
einen Benutzer-Home-Ordner impliziert. / ist natürlich das Stammverzeichnissudo 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 --deep
und ohne abschließenden Schrägstrich:
sudo codesign --force --sign - /path/to/application.app
Hinweis, nur um es klarer zu machen: Nachdem Sie die Signatur angewendet haben, starten Sie die App, akzeptieren Sie ein letztes Mal eingehende Verbindungen, beenden Sie sie und starten Sie sie erneut, um zu überprüfen, ob die Anfrage weg ist.
-
after --sign
bedeutet, 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. Laufen man codesign
Sie, um die Erklärung zu sehen.sudo codesign --force --sign - /path/to/application.app
hat bei mir funktioniert, aber nicht die vom Autor vorgeschlagene Variante. Ich frage mich, ob --deep
oder der führende Schrägstrich ein Problem war.Der Link von RedYeti ist zwar nützlich, aber nur um ein paar Klicks für andere zu sparen, lassen Sie mich noch einmal zusammenfassen, wie Sie ein Code-Signatur-Zertifikat generieren und es zum (Neu-)Signieren von Code verwenden:
Erstellen Sie Ihr eigenes Codesignatur-Zertifikat:
In der Schlüsselbundverwaltung, Schlüsselbundverwaltung > Zertifikatsassistent > Zertifikat erstellen. Dadurch wird der Zertifikatsassistent gestartet:
Name: Geben Sie hier eine beliebige Zeichenfolge ein, die Sie sich merken können. Vermeiden Sie Leerzeichen, da Sie sonst den Namen des Zertifikats maskieren müssen, wenn Sie es über codesign
die Befehlszeile verwenden.
Identitätstyp: Selbstsignierter Stamm
Zertifikatstyp: Code Signing
Aktivieren Sie das Kontrollkästchen "Standardwerte überschreiben lassen", dies ist sehr wichtig
Seriennummer: 1 (OK, solange die Kombination aus Zertifikatsname und Seriennummer eindeutig ist)
Gültigkeitsdauer: 3650 (ergibt 10 Jahre)
E-Mail, Name usw. nach Belieben ausfüllen.
Informationen zum Schlüsselpaar: auf RSA, 2048 Bit eingestellt. Spielt IMHO keine Rolle.
Von „Schlüsselverwendungserweiterung“ bis „Subject Alternate Name Extension“: Akzeptieren Sie die Standardeinstellungen.
Ort: Login-Schlüsselbund.
Sobald es erstellt ist, stellen Sie im Login-Schlüsselbund „Immer vertrauen“ ein: Klicken Sie mit der rechten Maustaste auf das Zertifikat, wählen Sie „Informationen abrufen“ und setzen Sie im Abschnitt „Vertrauen“ „Bei Verwendung dieses Zertifikats“ auf „Immer vertrauen“.
App neu signieren:codesign -f --deep -s <certname> /path/to/app
Überprüfen Sie, ob es funktioniert hat:codesign -dvvvv /path/to/app
Genießen!
UPDATE: Leute haben mich gefragt, warum das in macOS 10.14 „Mojave“ „nicht funktioniert“. Jetzt, wo ich endlich aufgerüstet habe :-), hier ist, was ich gelernt habe.
Verwenden Sie grundsätzlich kein selbstsigniertes Zertifikat für Codesignierung. Generieren Sie stattdessen ein Zertifikat mit Ihrer Apple-ID in Xcode. Um die Schritte noch einmal kurz zusammenzufassen:
Wählen Sie in Xcode > Einstellungen > Konten Ihre Apple-Entwickler-ID aus, klicken Sie auf „Zertifikate verwalten“, wählen Sie das „+“ in der linken unteren Ecke, es bietet Ihnen die Option „Apple-Entwicklung“. Wählen Sie das aus, damit wird ein Zertifikat für Sie erstellt. Durch Strg-Klick auf das neue Zertifikat können Sie es (im .p12
Format) exportieren und durch open
-ing dieser .p12
Datei wird es in Ihren Login-Schlüsselbund geladen.
Sie werden sehen, dass dieses Zertifikat ein Jahr lang gültig ist, "Ausgestellt von: Apple Worldwide Developer Relations Certification Authority". Ich vermute, das ist vertrauenswürdiger als ein selbstsigniertes Zertifikat.
Nun können Sie Ihre App wie bisher mit signieren codesign -f -s <apple_ID> /path/to/prog
. Ich habe es mit einer einfachen Binärdatei versucht (kompiliert von hello.c
:-) ), und es konnte mit verifiziert werden codesign -v
.
Ich habe es noch nicht mit Python-Paketen versucht, daher habe ich keinen Rat an Leute, die in ihren Kommentaren erwähnt haben, dass dies "python.app" nicht signieren kann.
Dies bezieht sich darauf, ob die App signiert ist oder nicht. Wenn es nicht signiert ist, wird die Einstellung nicht gespeichert.
Um zu sehen, ob eine App signiert ist, tun Sie dies im Terminal:
cd path/to/your/app
codesign -vvv Eclipse.app/
Für Eclipse - meins sagt, dass es überhaupt nicht signiert ist. Ich kann nicht weiter kommentieren, wie die App signiert wird, da ich mich nicht darum gekümmert habe, aber diese Antwort auf Superuser deckt es ab:
Wenn Sie in Go programmieren:
http.ListenAndServe("localhost:8080", nil)
Anstatt von:
http.ListenAndServe(“:8080”, null)
Nur ein Hinweis: Wenn Sie eine virtuelle Umgebung verwenden, müssen Sie die App signieren, die für die Umgebung verwendet wird. Ich weiß, das ist offensichtlich, aber es musste trotzdem gesagt werden.
Ich habe Hilfe bei Sayan Mohsins Antwort erhalten, und ich glaube, sie ist allgemeiner als go
.
Ich hatte dieses Problem mit einer Software, die keine Verbindungen von außen zulassen muss, sondern nur von meinem Computer. Solche Software muss nicht signiert werden, um diese Warnung zu vermeiden: Sie muss nur ausdrücklich localhost
nur zuhören.
Abhängig von Ihrer Umgebung wird das Festlegen einer Hosteinschränkung unterschiedlich durchgeführt. In meinem Fall habe ich mit einem nginx
Server gearbeitet, und das Ändern seiner Konfiguration von listen 8080
auf listen 127.0.0.1:8080
reichte aus, um das Problem zu beheben.
Wenn dies auch bei Ihnen der Fall ist, sollten Sie auf jeden Fall prüfen, ob Ihr Server eine Möglichkeit zum Einrichten der Hostbeschränkung bietet, und diese auf localhost
oder einrichten 127.0.0.1
.
Wenn Sie nach einer Möglichkeit suchen, diese Warnung für den iOS-Simulator zu deaktivieren, können Sie dieses Skript von Tom Soderling verwenden :
#!/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
Beachten Sie, dass Sie es nach jedem Neustart erneut ausführen müssen. Sie können dies tun, launchd
indem Sie diese Anweisungen befolgen . Geben Sie dies unbedingt an:
<key>LaunchOnlyOnce</key>
<true/>
Ich schätze, dass dies ein altes Q & A ist, aber es war der erste Treffer bei Google für mich, als ich das gleiche Problem hatte. Ich wollte nur etwas für andere hinzufügen, die hier landen können.
Um einen der hier beschriebenen Codesign-Befehle auszuführen, müssen die xcode-Befehlszeilentools 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 Beitrag kommentiert, aber ich habe nicht die Reputationspunkte dafür.
Meine Situation beinhaltet zwei Kopien von Eclipse, die auf 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. Die Auswahl von "Akzeptieren" würde die Meldung weiterhin nach jedem Neustart anzeigen, anscheinend wurde die Firewall-Einstellung nicht aktualisiert.
Die Lösung bestand darin, MacOS-Systemeinstellungen -> Sicherheit und Datenschutz -> Firewall zu öffnen, den Bildschirm zu entsperren, Firewall-Optionen. Wählen Sie Eclipse.app „Eingehende Verbindungen zulassen“ und entfernen Sie es mit der Schaltfläche „-“. Das nächste Mal, als ich "Zulassen" für die Eclipse-Eingabeaufforderung "Eingehende Verbindungen akzeptieren" auswählte, war das letzte Mal.
Ich bekomme 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".
Danach kein lästiges Dialogfeld mehr vom Canon-Druckertreiber.
Ich habe alles oben in Mac 10.13 ausprobiert und nichts hat funktioniert.
Am Ende schrieb ich ein Skript, das beim Abmelden ausgeführt wurde und an den Anmelde-Hook angehängt war, der die Firewall ausschaltete. Wenn er also angemeldet war, benötigte er keine Berechtigung mehr. Dann führte die Verwendung von delaylauncher ein anderes Skript aus, das die Firewall einschaltete.
Alles gut jetzt
Die Lösung für mich war, die Firewall einfach komplett zu deaktivieren. Es ist sehr üblich, webfähige Software zu erstellen, die natürlich nicht signiert ist, weil Sie sie nativ kompilieren.
Öffnen Sie das Spotlight mit CMD + Leertaste und suchen Sie nach „Datenschutz“ und wählen Sie „Sicherheit und Datenschutz“. Wechseln Sie dann auf den Reiter „Firewall“ und deaktivieren Sie dort die Firewall.
Martin Marconcini
Peter Stibraný
Martin Marconcini
Ben Wyatt
Gunnar
Grünonline