Como se livrar da caixa de diálogo "aceitar conexões de entrada" do firewall?

101

Aceitei isso tantas vezes que o firewall já deve se lembrar.

Por exemplo, eu o obtenho no Eclipse ao iniciar meus programas java no modo de depuração ... às vezes esse diálogo é exibido apenas muito em breve, como meio segundo, e desaparece. Também o obtenho no iTunes (quando habilito o compartilhamento de minha biblioteca) e em outros programas, apesar de tê-los listados no painel de preferências do Firewall (configurações avançadas).

Peter Štibraný
fonte
Qual versão do OSX você está usando?
Martin Marconcini 18/10/10
@ Martin: adicionada tag snow-leopard. Eu uso o melhor e o mais recente 1.6.4.
Peter Štibraný
O comportamento é muito estranho ao meu conhecimento. O firewall examina a assinatura do aplicativo para reconhecê-lo; portanto, qualquer alteração no aplicativo significa que ele pode não ser mais reconhecido e, portanto, causará um novo prompt. O Leopard era mais propenso a isso do que 10,6, no entanto, ainda acontece pelo que você está dizendo.
Martin Marconcini 18/10/10
Eu costumava ver isso o tempo todo com o VirtualBox no Snow Leopard. Eu adoraria ouvir uma explicação para isso também.
Ben Wyatt
Muito irritante. Eu vejo o pop-up algumas vezes por dia enquanto trabalhava no Eclipse. Ele aparece apenas por um segundo ou mais. Isso acontece no Mountain Lion com o Eclipse Juno SR2.
Gunnar

Respostas:

12

Existem duas opções aqui:

  1. Você pode simplesmente selecionar "Permitir tudo" no seu firewall ou simplesmente desativá-lo.
  2. Você pode remover os aplicativos da lista, excluir o plistarquivo desses aplicativos, executá-los e adicioná-los à lista. O especialista é responsável por muitos comportamentos e estou disposto a apostar que uma atualização para o sistema operacional ou o aplicativo pode causar a quebra do "link".

Sobre plistarquivos ... Um plist é um tipo especial de arquivo de texto que contém propriedades que o aplicativo e outros recursos, normalmente o sistema operacional, usam para reter e reutilizar as informações necessárias para executar o aplicativo. plisté um tipo de arquivo e tem muitos usos, geralmente armazenando preferências do usuário, mas, essencialmente, é um arquivo XML. Você pode verificar se existem caches, geralmente plistarquivos, para os aplicativos em questão em /Library/Cachese /System/Library/Caches. Há também um, ~/Library/Caches/mas coisas ruins podem acontecer quando se esconde por aí, então deixe em paz. O sistema entra nessas pastas por uma grande variedade de razões, e eu costumo limpar as duas primeiras pastas que listei completamente uma vez por mês.

Philip Regan
fonte
Você pode explicar o que quer dizer com "excluir o arquivo plist desses aplicativos"?
Peter Štibraný
2
os arquivos plist contêm as configurações do aplicativo, entre outras coisas (e é seguro excluí-los, mas sempre faça uma cópia, por precaução). Qualquer aplicativo Cocoa deve ser programado para recriar sua própria lista, caso o arquivo “desapareça”. A lista de aplicativos geralmente está localizada em / Users / your_user / Library / Preferences. Os arquivos terminam com a extensão .plist e geralmente têm nomes como: “com.company.appname.plist”, por exemplo: com.adobe.Phosothop.plist. Você pode movê-los para a área de trabalho e iniciar o aplicativo para "recriá-lo".
Martin Marconcini 18/10/10
Os ~s nos caminhos de arquivo acima referenciam a pasta inicial do usuário atual ou o diretório raiz?
2
Voto negativo, pois isso não é realmente uma opção em muitos casos. O comentário de user465139 é mais apropriado. Embora ainda seja um risco à segurança - é pelo menos menor do que permitir a entrada / saída de todos os aplicativos.
sholsinger 13/09/14
11
concorde com @sholsinger neste, apenas tropeçando nisso para o Mavericks + PHPStorm e a alternativa de assinatura automática é fácil, rápida e funciona. Esse negócio de plist é meio confuso.
Alex Weber
61
sudo codesign --force --deep --sign - /path/to/application.app

Eu nunca tive que criar um certificado usando esse método.

Se isso não ajudar, tente sem --deepe sem a barra à direita:

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

Observe, apenas para esclarecer: depois de aplicar a assinatura, inicie o aplicativo, aceite as conexões de entrada uma última vez, saia e inicie novamente para verificar se a solicitação foi encerrada.

um corredor
fonte
5
Eu sei porque eu fiz isso? Não sei exatamente o que você está pedindo ... usando esse método, consegui me livrar do pop-up 'aceitar notificações recebidas' (embora após a assinatura você seja solicitado uma última vez e depois não mais) ) Funcionou para mim no Spotify e AppCode. Se você precisar de informações, leia a página de manual? edit: Estou usando o Yosemite GM Candidate v3.0, se isso o ajudar.
ahall
2
Gostaria de alterar um pequeno detalhe: o aplicativo que precisa ser endereçado em / path / to / app deve conter o final .app , ou seja: /path/to/exampleapp.app.
4
@IconDaemon O uso de -after --signsignifica que "assinatura ad-hoc" é usada; não é necessário ter um certificado para usar esse comando. Não entendo por que isso contradiz o uso do terminal. Corra man codesignpara ver a explicação.
Mike
3
Simples e funciona. Resposta muito melhor que a aceita, pois não quero excluir arquivos plist.
29414 Justin
2
sudo codesign --force --sign - /path/to/application.appfuncionou para mim, mas não a variação sugerida pelo autor. Gostaria de saber se --deepou a barra principal foi um problema.
Jose Alban
61

Embora o link do RedYeti seja útil, apenas para economizar alguns cliques para outros, deixe-me recapitular como gerar um certificado de assinatura de código e usá-lo para a (re) assinatura de código:

  1. Crie seu próprio certificado de assinatura de código:

    • No Acesso às Chaves, Acesso às Chaves> Assistente de Certificado> Criar um certificado. Isso inicia o Assistente de certificado:

    • Nome: Digite aqui uma sequência arbitrária que você possa se lembrar. Evite espaços, caso contrário, você precisará escapar do nome do certificado ao usá codesign-lo na linha de comando.

    • Tipo de identidade: Raiz autoassinada

    • Tipo de certificado: assinatura de código

    • Marque a caixa "Deixe-me substituir os padrões", isso é muito importante

    • Número de série: 1 (OK, desde que a combinação nome / número de série do certificado seja única)

    • Período de validade: 3650 (dá-lhe 10 anos)

    • E-mail, nome, etc. preencha como desejar.

    • Informações do par de chaves: definido como RSA, 2048 bits. Realmente não importa IMHO.

    • De "Extensão de uso da chave" até "Extensão de nome alternativo do assunto": aceite os padrões.

    • Localização: chaveiro de login.

    • Depois de criado, defina como "Sempre confie" no chaveiro de logon: clique com o botão direito do mouse no certificado, escolha "Obter informações" e, na seção "Confiança", defina "Ao usar este certificado" para "Confiar sempre".

  2. Assinando novamente um aplicativo: codesign -f --deep -s <certname> /path/to/app

  3. Verifique se funcionou: codesign -dvvvv /path/to/app

Desfrutar!

ATUALIZAÇÃO: As pessoas me perguntaram por que isso "não está funcionando" no macOS 10.14 "Mojave". Agora que finalmente atualizei :-), eis o que aprendi.

Basicamente, não use um certificado autoassinado para assinatura de código. Gere um certificado usando seu ID Apple no Xcode . Para recapitular brevemente as etapas:

Em Xcode> Preferências> Contas, selecione seu ID de desenvolvedor Apple, clique em "Gerenciar Certificados", selecione "+" no canto inferior esquerdo, e oferece a opção "Desenvolvimento da Apple". Selecione isso, isso fará um certificado para você. Clicando com a tecla Ctrl pressionada no novo certificado, você pode exportá-lo (em .p12formato) e, ao openclicar nesse .p12arquivo, ele é carregado no chaveiro de Login.

Você verá que este certificado é válido por um ano, "Emitido por: Autoridade Certificadora de Relações com o Desenvolvedor da Apple Worldwide". Suspeito que seja mais confiável do que um certificado autoassinado.

Agora você pode assinar seu aplicativo como antes com codesign -f -s <apple_ID> /path/to/prog. Eu tentei com um binário simples (compilado de hello.c:-)), e pode ser verificado com codesign -v.

Ainda não testei com pacotes Python, por isso não aconselho as pessoas que mencionaram em seus comentários que isso não pode assinar "python.app".

Laringe Decidua
fonte
4
Obrigado! Esta é a única solução que se livrou dos diálogos do firewall nag para mim. Estou executando o OSX 10.10 Yosemite.
21714 Jason
11
muito agradável! fácil para desenvolvedores que já possuem um certificado também!
Cwd
11
uma observação: maximizei o período de validade para 7300 (dias), ou seja, 20 anos. Descobri com algumas tentativas que este é o número máximo que a caixa de entrada aceita (pelo menos no OSX Yosemite 10.10.3) - muito bem, parabéns!
DavAlPi
A resposta de ahall é muito mais simples e funcionou para mim no OS X 10.10
N1000
Não funcionou para mim no OS X 10.11.1 (15B42)
suzanshakya
15

Isso está relacionado ao fato de o aplicativo ser assinado ou não. Se não estiver assinado, a preferência não será lembrada.

Para ver se um aplicativo está assinado, faça isso no Terminal:

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

Para o Eclipse - o meu diz que não está assinado. Não posso comentar mais sobre como assinar o aplicativo, pois não me preocupei em fazer isso, mas esta resposta no superusuário cobre:

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

RedYeti
fonte
11
Enquanto a resposta de ahall fornece uma solução, essa resposta explica o porquê. Se mesclado, seria a resposta perfeita.
Not2savvy #
3

Apenas uma observação: se você estiver usando um ambiente virtual, assine o aplicativo que está sendo usado para o ambiente. Eu sei que isso é óbvio, mas precisava ser dito, no entanto.

flyboy777
fonte
muito obrigado, mas em vez de um aplicativo, como eu assinaria uma versão python (digamos python3.6) em um ambiente conda?
Agile Bean
1

Compreendo que este é um antigo questionário, mas foi o primeiro hit do google para mim quando tive o mesmo problema. Só queria adicionar algo para outras pessoas que possam pousar aqui.

Para executar qualquer um dos comandos codesign descritos aqui, é necessário ter as ferramentas de linha de comando xcode instaladas. Sem isso, uma mensagem de erro é exibida:

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

Para corrigir isso, instale as ferramentas com:

xcode-select install

Eu teria comentado no post de ahall, mas não tenho pontos de reputação para fazê-lo.

Pete
fonte
0

Eu sempre recebia essa caixa de diálogo (Canon ccpd) depois de iniciar o computador. Abra firewall> segurança e privacidade> desbloqueie para ativar as alterações> clique no botão "Ativar modo furtivo"> ​​clique no botão "Bloquear todas as conexões de entrada".

Não há mais caixa de diálogo irritante do driver de impressora Canon depois disso.

Doc Olmo
fonte
Mas o aplicativo não vai funcionar ...
not2savvy
0

Eu tentei tudo o que precede no Mac 10.13 e nada funcionou.

No final, escrevi um script que rodava no logout anexado ao gancho de logon que desativava o firewall. Quando conectado, não precisava mais de permissão, o uso do delayedlauncher executava outro script que ativava o firewall.

Tudo bem agora

Ash Dean Wells
fonte
Bem-vindo ao perguntar diferente! Você pode compartilhar seu script para que outros usuários também possam lucrar com sua solução.
Glorfindel
0

Minha situação envolve duas cópias do Eclipse instaladas no MacOS Mojave 10.14.5. A primeira cópia foi autorizada com o firewall do MacOS. A segunda cópia sempre apresentaria o prompt "aceitar conexões de entrada". Escolher "Aceitar" continuaria a apresentar a mensagem após cada reinicialização, aparentemente a configuração do firewall não foi atualizada.

A solução foi abrir Preferências do sistema MacOS -> Segurança e privacidade -> Firewall, desbloquear a tela, Opções de firewall. Selecione Eclipse.app "Permitir conexões de entrada" e remova-o com o botão "-". A próxima vez que selecionei "Permitir" para o Eclipse "aceitar conexões de entrada" foi a última.

Les Grieve
fonte
-2

A solução para mim foi desativar o firewall completamente. É extremamente comum criar partes de software ativadas para a Web que, obviamente, não são assinadas porque você as está compilando nativamente.

Abra os holofotes com a barra de espaço CMD + e pesquise "privacidade" e selecione "Segurança e privacidade". Em seguida, mude para a guia "Firewall" e desative o firewall lá.

anon58192932
fonte
2
Parece uma solução muito ruim para a maioria das pessoas, a menos que elas saibam o que estão fazendo. Os firewalls existem por um bom motivo - mesmo em Macs.
RedYeti 16/03/2019
Eu acho que você quis dizer "Firewalls são irritantes - mesmo em macs". Nem todo mundo é instruído correndo em redes Wi-Fi abertas nos aeroportos, com todas as suas portas abertas, baixando vírus de sites de distribuição de malware. Minha resposta corrige corretamente o problema e contorna as caixas pop-up estupidamente irritantes da Apple. Toda vez que você recompila um binário que usa a rede, você obtém o pop-up que é absolutamente imperdoável. O pop-up é apenas outra maneira irritante que a Apple tenta criar para as pessoas sem instrução, deixando os desenvolvedores em alta.
anon58192932
11
Eu concordo - nem todo mundo é instruído. No entanto, sobre este assunto, a grande maioria das pessoas é. Mesmo aqueles que não são devem saber melhor do que remover o principal componente de segurança de rede. No mínimo, alertar as pessoas sobre as possíveis consequências teria sido bom. Simplesmente desligando o firewall, eu não consideraria uma "correção", mas uma solução alternativa muito hacky.
RedYeti