Come sbarazzarsi della finestra di dialogo "accetta connessioni in entrata" del firewall?


101

L'ho accettato così tante volte che il firewall dovrebbe già ricordarlo.

Ad esempio, lo ottengo per Eclipse all'avvio dei miei programmi Java in modalità debug ... a volte questa finestra di dialogo viene visualizzata solo molto brevemente, come mezzo secondo, e scompare. Lo ottengo anche per iTunes (quando abilito la condivisione della mia libreria) e altri programmi, anche se li ho elencati nel pannello delle preferenze di Firewall (impostazioni avanzate).


Quale versione di OSX stai usando?
Martin Marconcini,

@Martin: aggiunto tag snow-leopard. Uso l'ultimo e il più grande 1.6.4.
Peter Štibraný,

Il comportamento è molto strano per quanto ne sappia. Il firewall esamina la firma dell'app per riconoscerla, quindi qualsiasi modifica nell'app significa che potrebbe non essere più riconosciuta e quindi causerà un nuovo prompt. Leopard era più incline a questo rispetto a 10.6, tuttavia succede ancora da quello che stai dicendo.
Martin Marconcini,

Lo vedevo sempre con VirtualBox su Snow Leopard. Mi piacerebbe anche avere una spiegazione per questo.
Ben Wyatt,

Molto noioso. Vedo il popup un paio di volte al giorno mentre lavoro in Eclipse. Si presenta solo per un secondo o meno. Questo succede su Mountain Lion con Eclipse Juno SR2.
Gunnar,

Risposte:


12

Ci sono due opzioni qui:

  1. Puoi semplicemente selezionare "Consenti tutto" nel tuo firewall o semplicemente disattivarlo.
  2. È possibile rimuovere le app dall'elenco, eliminare il plistfile per tali app, eseguirle e quindi aggiungerle all'elenco. Il plist è responsabile di molti comportamenti e sono disposto a scommettere che un aggiornamento del sistema operativo o l'app può causare l'interruzione del "collegamento".

Informazioni sui plistfile ... Un plist è un tipo speciale di file di testo che contiene proprietà che l'applicazione e altre risorse, in genere il sistema operativo, utilizzano per conservare e riutilizzare le informazioni necessarie per eseguire l'applicazione. plistè un tipo di file e ha molti usi, in genere memorizza le preferenze dell'utente, ma, essenzialmente, è un file XML. Puoi vedere se ci sono delle cache, che in genere sono plistfile, per le applicazioni in questione in /Library/Cachese /System/Library/Caches. Ce ~/Library/Caches/n'è anche uno, ma possono succedere cose brutte quando ti muovi in ​​giro, quindi lascialo solo. Il sistema va in quelle cartelle per una grande varietà di motivi e di solito pulisco le prime due cartelle che ho elencato completamente una volta al mese.


Puoi spiegare cosa intendi con "elimina il file plist per quelle app"?
Peter Štibraný,

2
i file plist contengono le impostazioni dell'applicazione tra le altre cose (ed è sicuro eliminarle, ma crea sempre una copia per ogni evenienza). Qualsiasi app Cocoa deve essere programmata per ricreare il proprio plist se il file "scompare". Il plist per le app si trova di solito in / Users / your_user / Library / Preferences. I file terminano con l'estensione .plist e di solito hanno nomi come: "com.company.appname.plist", ad esempio: com.adobe.Phosothop.plist. Puoi spostarli sul desktop e avviare l'applicazione per "ricrearla".
Martin Marconcini,

I messaggi di posta ~elettronica nei percorsi file sopra fanno riferimento alla cartella principale dell'utente corrente o alla directory principale?

2
Sottovalutato poiché in molti casi questa non è un'opzione. Il commento di user465139 è più appropriato. Sebbene sia ancora un rischio per la sicurezza, è almeno meno che consentire a tutte le app di entrare / uscire.
Sholsinger,

1
sono d'accordo con @sholsinger su questo, solo inciampando su questo per Mavericks + PHPStorm e l'alternativa autofirmante è facile, veloce e funziona. Questo business da plist è un po 'confuso.
Alex Weber,

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

Non ho mai dovuto creare un certificato usando questo metodo.

Se ciò non aiuta, prova senza --deepe senza la barra finale:

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

Nota, solo per renderlo più chiaro: dopo aver applicato la firma, avvia l'app, accetta le connessioni in entrata un'ultima volta, quindi esci e ricomincia per verificare che la richiesta sia andata a buon fine.


5
Lo so perché l'ho fatto? Non sono sicuro di cosa esattamente stai chiedendo ... usando quel metodo sono stato in grado di sbarazzarmi del pop-up "accetta le notifiche in arrivo" (anche se dopo aver firmato ti verrà chiesto un'ultima volta, e poi non più ). Ha funzionato per me per Spotify e AppCode. Se hai bisogno di informazioni leggi la pagina man? modifica: sto usando Yosemite GM Candidate v3.0 se questo ti aiuta.
ahall

2
Vorrei modificare un piccolo dettaglio: l'app che deve essere indirizzata in / path / to / app deve contenere la desinenza .app , ovvero: /path/to/exampleapp.app.

4
@IconDaemon L'uso di -after --signsignifica che viene utilizzata la "firma ad hoc"; non è necessario disporre di un certificato per utilizzare quel comando. Non capisco perché ciò contraddirebbe l'uso del terminale. Corri man codesignper vedere la spiegazione.
Mike,

3
Semplice e funziona. Molto meglio della risposta accettata in quanto non voglio eliminare i file plist.
Giustino,

2
sudo codesign --force --sign - /path/to/application.appha funzionato per me, ma non la variazione suggerita dall'autore. Mi chiedo se --deepo la barra iniziale fosse un problema.
Jose Alban,

61

Mentre il link di RedYeti è utile, solo per salvare alcuni clic per gli altri, vorrei ricapitolare come generare un certificato di firma del codice e come usarlo per la (nuova) firma del codice:

  1. Crea il tuo certificato di firma del codice:

    • In Accesso portachiavi, Accesso portachiavi> Assistente certificato> Crea un certificato. Questo avvia l'Assistente certificato:

    • Nome: inserisci qui una stringa arbitraria che puoi ricordare. Evita gli spazi, altrimenti dovrai sfuggire al nome del certificato quando lo usi codesigndalla riga di comando.

    • Tipo di identità: radice autofirmata

    • Tipo di certificato: firma del codice

    • Seleziona la casella "Fammi sostituire le impostazioni predefinite", questo è abbastanza importante

    • Numero di serie: 1 (OK purché la combinazione nome certificato / numero di serie sia univoca)

    • Periodo di validità: 3650 (ti dà 10 anni)

    • Email, nome, ecc. Compila come desideri.

    • Informazioni sulla coppia di chiavi: impostato su RSA, 2048 bit. Non importa davvero l'IMHO.

    • Da "Estensione utilizzo chiave" fino a "Estensione nome alternativo soggetto": accetta le impostazioni predefinite.

    • Posizione: portachiavi di accesso.

    • Una volta creato, imposta "Fidati sempre" nel portachiavi di accesso: fai clic con il pulsante destro del mouse sul certificato, scegli "Ottieni informazioni" e, nella sezione "Affidabilità", imposta "Quando usi questo certificato" su "Fidati sempre".

  2. Riscrivere un'app: codesign -f --deep -s <certname> /path/to/app

  3. Verifica che abbia funzionato: codesign -dvvvv /path/to/app

Godere!

AGGIORNAMENTO: Le persone mi hanno chiesto perché questo "non funziona" in macOS 10.14 "Mojave". Ora che ho finalmente aggiornato :-), ecco cosa ho imparato.

Fondamentalmente, non utilizzare un certificato autofirmato per la firma del codice. Genera invece un certificato utilizzando il tuo ID Apple in Xcode . Per riassumere brevemente i passaggi:

In Xcode> Preferenze> Account, seleziona il tuo ID sviluppatore Apple, fai clic su "Gestisci certificati", seleziona il "+" nell'angolo in basso a sinistra, ti offre l'opzione "Sviluppo Apple". Selezionalo, questo farà un certificato per te. Facendo clic con il tasto Ctrl sul nuovo certificato è possibile esportarlo (in .p12formato) e openinserendo quel .p12file viene caricato nel portachiavi di accesso.

Vedrai che questo certificato è valido per un anno, "Rilasciato da: Apple Worldwide Developer Relations Certification Authority". Ho il sospetto che sia più affidabile di un certificato autofirmato.

Ora puoi firmare la tua app come prima con codesign -f -s <apple_ID> /path/to/prog. L'ho provato con un semplice binario (compilato da hello.c:-)), e potrebbe essere verificato con codesign -v.

Non l'ho ancora provato con i pacchetti Python, quindi non ho consigli alle persone che hanno menzionato nei loro commenti che questo non può firmare "python.app".


4
Grazie! Questa è l'unica soluzione che mi ha sbarazzato delle finestre di dialogo del firewall. Sto eseguendo OSX 10.10 Yosemite.
Jason,

1
molto bella! facile anche per gli sviluppatori che hanno già un certificato!
Cwd,

1
una nota a margine: ho massimizzato il periodo di validità a 7300 (giorni), ovvero 20 anni. Ho scoperto con alcuni che questo è il numero massimo che accetta la casella di input (almeno su OSX Yosemite 10.10.3) - molto bene, complimenti!
DavAlPi,

la risposta di ahall è molto più semplice e ha funzionato per me su OS X 10.10
n1000,

Non ha funzionato per me su OS X 10.11.1 (15B42)
suzanshakya,

15

Ciò dipende dal fatto che l'app sia firmata o meno. Se non è firmato, la preferenza non verrà ricordata.

Per vedere se un'app è firmata, fallo nel Terminale:

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

Per Eclipse - il mio dice che non è affatto firmato. Non posso commentare ulteriormente come firmare l'app poiché non mi sono preoccupato di farlo, ma questa risposta su superutente la copre:

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


1
Mentre la risposta di ahall fornisce una soluzione, questa risposta spiega perché. Se unita, sarebbe la risposta perfetta.
not2savvy,

3

Solo una nota però, se si utilizza un ambiente virtuale, assicurarsi di firmare l'app utilizzata per l'ambiente. So che questo è ovvio, ma bisogna dirlo comunque.


grazie mille ma invece di un'app, come potrei firmare una versione di Python (diciamo python3.6) in un ambiente conda?
Agile Bean,

1

Mi rendo conto che si tratta di una vecchia domanda e risposta, ma per me è stato il primo successo su Google quando ho avuto lo stesso problema. Volevo solo aggiungere qualcosa per gli altri che potrebbero atterrare qui.

Per eseguire uno qualsiasi dei comandi di codesign delineati qui, è necessario disporre degli strumenti della riga di comando xcode installati. Senza questi, si ottiene un messaggio di errore:

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

Per risolvere questo problema, installa gli strumenti con:

xcode-select install

Avrei commentato il post di ahall, ma non ho i punti reputazione per farlo.


0

Ho ricevuto questa finestra di dialogo (Canon ccpd) ogni volta che ho avviato il mio computer. Apri firewall> sicurezza e privacy> sblocca per abilitare le modifiche> fai clic sul pulsante "Abilita modalità invisibile"> fai clic sul pulsante "Blocca tutte le connessioni in entrata".

Dopodiché, non sarà più necessaria una finestra di dialogo irritante dal driver della stampante Canon.


Ma l'app non funzionerà ...
not2savvy,

0

Ho provato tutto quanto sopra in Mac 10.13 e niente ha funzionato.

Alla fine ho scritto uno script che è stato eseguito al logout collegato all'hook di accesso che ha disattivato il firewall, quindi quando è stato effettuato l'accesso non è più necessario il permesso, quindi utilizzando delayedlauncher è stato eseguito un altro script che ha attivato il firewall.

Va tutto bene adesso


Benvenuti a chiedere diverso! Potresti voler condividere il tuo script in modo che anche altri utenti possano trarre profitto dalla tua soluzione.
Glorfindel

0

La mia situazione riguarda due copie di Eclipse installate su MacOS Mojave 10.14.5. La prima copia è stata autorizzata con il firewall di MacOS. La seconda copia presenterà sempre il prompt "accetta connessioni in entrata". La scelta di "Accetta" continuerà a presentare il messaggio dopo ogni riavvio, a quanto pare l'impostazione del firewall non è stata aggiornata.

La soluzione era aprire Preferenze di sistema di MacOS -> Sicurezza e privacy -> Firewall, sbloccare lo schermo, Opzioni firewall. Seleziona Eclipse.app "Consenti connessioni in entrata" e rimuovilo con il pulsante "-". La volta successiva che ho selezionato "Consenti" al prompt "accetta connessioni in entrata" di Eclipse è stato l'ultimo.


-2

La soluzione per me era disabilitare completamente il firewall. È estremamente comune creare software abilitati per il Web che ovviamente non sono firmati perché li stai compilando in modo nativo.

Apri i riflettori con CMD + barra spaziatrice e cerca "privacy" e seleziona "Sicurezza e privacy". Quindi passare alla scheda "Firewall" e disabilitare il firewall lì.


2
Sembra una soluzione piuttosto scadente per la maggior parte delle persone a meno che non sappiano cosa stanno facendo. I firewall sono lì per una buona ragione, anche su Mac.
RedYeti,

Penso che volevi dire "I firewall sono fastidiosi, anche sui Mac". Non tutti non sono istruiti in giro su reti wifi aperte negli aeroporti con tutte le loro porte aperte che scaricano virus da siti di distribuzione di malware. La mia risposta risolve correttamente il problema e aggira le caselle popup stupidamente fastidiose di Apple. Ogni volta che ricompili un binario che utilizza la rete ottieni il popup che è assolutamente imperdonabile. Il popup è solo un altro modo fastidioso che Apple cerca di fare da baby-sitter a persone non istruite lasciando gli sviluppatori alti e asciutti.
anon58192932

1
Sono d'accordo - non tutti non sono istruiti. Comunque su questo argomento la stragrande maggioranza delle persone lo sono. Anche quelli che non lo sono dovrebbero sapere meglio che eliminare il componente di sicurezza della rete principale. Per lo meno, avvertire le persone delle possibili conseguenze sarebbe stato positivo. Disattivando semplicemente il firewall non considererei una "correzione" ma una soluzione molto caotica.
RedYeti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.