¿Cómo deshacerse del diálogo "aceptar conexiones entrantes" del firewall?

101

He aceptado esto tantas veces que el firewall ya debería recordarlo.

Por ejemplo, lo obtengo para Eclipse cuando inicio mis programas java en modo de depuración ... a veces este cuadro de diálogo se muestra muy brevemente, como medio segundo, y desaparece. También lo obtengo para iTunes (cuando habilito compartir mi biblioteca) y otros programas, a pesar de que los tengo listados en el panel de preferencias de Firewall (configuración de avisos).

Peter Štibraný
fuente
¿Qué versión de OSX estás usando?
Martin Marconcini
@ Martin: agregada etiqueta de leopardo de las nieves. Yo uso el último y mejor 1.6.4.
Peter Štibraný
El comportamiento es muy extraño, que yo sepa. El firewall mira la firma de la aplicación para reconocerla, por lo que cualquier cambio en la aplicación significa que ya no se reconocerá y, por lo tanto, se generará una nueva solicitud. Leopard era más propenso a esto que 10.6, sin embargo, todavía sucede por lo que está diciendo.
Martin Marconcini
Solía ​​ver esto todo el tiempo con VirtualBox en Snow Leopard. Me encantaría escuchar una explicación también.
Ben Wyatt
Muy molesto. Veo la ventana emergente un par de veces al día mientras trabajo en Eclipse. Solo aparece por un segundo más o menos. Esto sucede en Mountain Lion con Eclipse Juno SR2.
Gunnar

Respuestas:

12

Aquí hay dos opciones:

  1. Simplemente puede seleccionar "Permitir todo" en su firewall o simplemente desactivarlo.
  2. Puede eliminar las aplicaciones de la lista, eliminar el plistarchivo de esas aplicaciones, ejecutarlas y luego agregarlas a la lista. La lista es responsable de muchos comportamientos y estoy dispuesto a apostar que una actualización del sistema operativo o la aplicación pueden hacer que el "enlace" se rompa.

Acerca de los plistarchivos ... Un plist es un tipo especial de archivo de texto que contiene propiedades que la aplicación y otros recursos, generalmente el sistema operativo, utilizan para retener y reutilizar la información necesaria para ejecutar la aplicación. plistes un tipo de archivo y tiene muchos usos, generalmente almacena las preferencias del usuario, pero, esencialmente, es un archivo XML. Puede ver si hay cachés, que normalmente son plistarchivos, para las aplicaciones en cuestión en /Library/Cachesy /System/Library/Caches. También hay uno, ~/Library/Caches/pero pueden pasar cosas malas cuando estás jugando allí, así que déjalo en paz. El sistema entra en esas carpetas por una amplia variedad de razones, y generalmente limpio las dos primeras carpetas que enumeré por completo aproximadamente una vez al mes.

Philip Regan
fuente
¿Puede explicar qué quiere decir con "eliminar el archivo plist para esas aplicaciones"?
Peter Štibraný
2
los archivos plist contienen la configuración de la aplicación, entre otras cosas (y es seguro eliminarlos, pero siempre hacen una copia por si acaso). Cualquier aplicación Cocoa debe programarse para volver a crear su propia lista si el archivo "desaparece". La lista de aplicaciones generalmente se encuentra en / Users / your_user / Library / Preferences. Los archivos terminan con la extensión .plist y generalmente tienen nombres como: "com.company.appname.plist", por ejemplo: com.adobe.Phosothop.plist. Puede moverlos a su escritorio e iniciar la aplicación para "volver a crearla".
Martin Marconcini
¿Las ~s en las rutas de los archivos anteriores hacen referencia a la carpeta de inicio del usuario actual o al directorio raíz?
2
Votado en contra ya que esta no es realmente una opción en muchos casos. El comentario de user465139 es más apropiado. Aunque sigue siendo un riesgo para la seguridad, es al menos menor que permitir la entrada / salida de todas las aplicaciones.
sholsinger
1
de acuerdo con @sholsinger en esto, solo tropezar con esto para Mavericks + PHPStorm y la alternativa de firma automática es fácil, rápida y funciona. Este negocio simple es un poco desordenado.
Alex Weber
61
sudo codesign --force --deep --sign - /path/to/application.app

Nunca he tenido que crear un certificado con este método.

Si eso no ayuda, intente sin --deepy sin la barra diagonal final:

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

Nota, solo para aclararlo: después de haber aplicado la firma, inicie la aplicación, acepte las conexiones entrantes por última vez, luego salga y comience nuevamente para verificar que la solicitud haya desaparecido.

una sala
fuente
55
¿Lo sé porque lo hice? No estoy seguro de qué es exactamente lo que está pidiendo ... utilizando ese método pude deshacerme de la ventana emergente 'aceptar notificaciones entrantes' (aunque después de firmar se le preguntará una última vez, y luego no más) ) Me funcionó para Spotify y AppCode. Si necesita información, lea la página del manual? editar: estoy usando Yosemite GM Candidate v3.0 si eso te ayuda.
ahall
2
Me gustaría modificar un pequeño detalle: la aplicación que debe abordarse en / path / to / app debe contener el final .app , es decir: /path/to/exampleapp.app.
44
@IconDaemon El uso de -after --signsignifica que se utiliza "firma ad-hoc"; no es necesario tener un certificado para usar ese comando. No entiendo por qué esto contradiría el uso del terminal. Corre man codesignpara ver la explicación.
Mike
3
Simple y funciona. Mucho mejor que la respuesta aceptada, ya que no quiero eliminar archivos plist.
Justin
2
sudo codesign --force --sign - /path/to/application.appha funcionado para mí, pero no la variación sugerida por el autor. Me pregunto si --deepo la barra diagonal principal fue un problema.
Jose Alban
61

Si bien el enlace de RedYeti es útil, solo para guardar unos pocos clics para otros, permítanme recapitular cómo generar un certificado de firma de código y usarlo para la (re) firma de código:

  1. Cree su propio certificado de firma de código:

    • En Keychain Access, Keychain Access> Certificate Assistant> Crear un certificado. Esto inicia el Asistente de certificado:

    • Nombre: ingrese aquí una cadena arbitraria que pueda recordar. Evite espacios; de lo contrario, deberá escapar del nombre del certificado cuando lo use codesigndesde la línea de comandos.

    • Tipo de identidad: raíz autofirmada

    • Tipo de certificado: firma de código

    • Marque la casilla "Permitirme anular los valores predeterminados", esto es bastante importante

    • Número de serie: 1 (OK siempre que la combinación de nombre de certificado / número de serie sea única)

    • Período de validez: 3650 (le da 10 años)

    • Correo electrónico, nombre, etc., complete como desee.

    • Información del par de claves: establecido en RSA, 2048 bits. Realmente no importa en mi humilde opinión.

    • Desde "Extensión de uso de clave" hasta "Extensión de nombre alternativo del sujeto": acepte los valores predeterminados.

    • Ubicación: llavero de inicio de sesión.

    • Una vez creado, establezca "Confiar siempre" en el llavero de inicio de sesión: haga clic con el botón derecho en el certificado, elija "Obtener información" y, en la sección "Confiar", establezca "Al usar este certificado" en "Confiar siempre".

  2. Volver a firmar una aplicación: codesign -f --deep -s <certname> /path/to/app

  3. Verifique que funcionó: codesign -dvvvv /path/to/app

¡Disfrutar!

ACTUALIZACIÓN: La gente me preguntó por qué esto "no funciona" en macOS 10.14 "Mojave". Ahora que finalmente he actualizado :-), esto es lo que aprendí.

Básicamente, no use un certificado autofirmado para la firma del código. Genere un certificado utilizando su ID de Apple en Xcode . Para recapitular los pasos brevemente:

En Xcode> Preferencias> Cuentas, seleccione su ID de desarrollador de Apple, haga clic en "Administrar certificados", seleccione el "+" en la esquina inferior izquierda, le ofrece la opción "Desarrollo de Apple". Seleccione eso, esto hará un certificado para usted. Al presionar Ctrl y hacer clic en el nuevo certificado, puede exportarlo (en .p12formato) y al hacer clic en openese .p12archivo se carga en su llavero de inicio de sesión.

Verá que este certificado es válido por un año, "Emitido por: Autoridad de Certificación de Relaciones con Desarrolladores de Apple en todo el mundo". Sospecho que es más confiable que un certificado autofirmado.

Ahora puede firmar su aplicación como antes con codesign -f -s <apple_ID> /path/to/prog. Lo probé con un binario simple (compilado de hello.c:-)), y se pudo verificar con codesign -v.

Todavía no lo he probado con los paquetes de Python, por lo que no tengo ningún consejo para las personas que mencionaron en sus comentarios que esto no puede firmar "python.app".

Laryx Decidua
fuente
44
¡Gracias! Esta es la única solución que eliminó los diálogos molestos del firewall para mí. Estoy ejecutando OSX 10.10 Yosemite.
Jason
1
¡muy agradable! ¡fácil para los desarrolladores que ya tienen un certificado también!
cwd
1
una nota al margen: he maximizado el período de validez a 7300 (días), es decir, 20 años. Descubrí con algunos intentos que este es el número máximo que acepta el cuadro de entrada (al menos en OSX Yosemite 10.10.3). ¡Muy bien, felicitaciones!
DavAlPi
la respuesta de ahall es mucho más simple y funcionó para mí en OS X 10.10
n1000
No funcionó para mí en OS X 10.11.1 (15B42)
suzanshakya
15

Esto se relaciona con si la aplicación está firmada o no. Si no está firmado, no se recordará la preferencia.

Para ver si una aplicación está firmada, haga esto en la Terminal:

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

Para Eclipse, el mío dice que no está firmado en absoluto. No puedo comentar más sobre cómo firmar la aplicación, ya que no me he molestado en hacerlo, pero esta respuesta en superusuario lo cubre:

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

RedYeti
fuente
1
Si bien la respuesta de ahall da una solución, esta respuesta explica por qué. Si se fusiona, sería la respuesta perfecta.
not2savvy
3

Sin embargo, solo una nota, si está utilizando un entorno virtual, asegúrese de firmar la aplicación que se está utilizando para el entorno. Sé que esto es obvio, pero aún así hay que decirlo.

flyboy777
fuente
muchas gracias, pero en lugar de una aplicación, ¿cómo firmaría una versión de Python (digamos python3.6) en un entorno conda?
Agile Bean
1

Aprecio que este es un viejo Q & A, pero fue el primer éxito en Google para mí cuando tuve el mismo problema. Solo quería agregar algo para otros que puedan aterrizar aquí.

Para ejecutar cualquiera de los comandos de codeign descritos aquí, es necesario tener instaladas las herramientas de línea de comandos de xcode. Sin estos, uno recibe un mensaje de error:

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

Para solucionar esto, instale las herramientas con:

xcode-select install

Hubiera comentado sobre la publicación de ahall, pero no tengo los puntos de reputación para hacerlo.

Pete
fuente
0

Recibí este cuadro de diálogo (Canon ccpd) cada vez que inicié mi computadora. Abra el firewall> seguridad y privacidad> desbloquee para habilitar los cambios> haga clic en el botón "Habilitar modo oculto"> haga clic en el botón "Bloquear todas las conexiones entrantes".

No más cuadro de diálogo irritante del controlador de impresora Canon después de eso.

Doc Olmo
fuente
Pero la aplicación no funcionará ...
not2savvy
0

Intenté todo lo anterior en Mac 10.13 y nada funcionó.

Al final, escribí un script que se ejecutó al cerrar la sesión adjunto al gancho de inicio de sesión que apagó el firewall, por lo que cuando inició sesión ya no necesitaba permiso, luego, usando el programa de inicio retardado, ejecuté otro script que activó el firewall.

Todo bien ahora

Ash Dean Wells
fuente
Bienvenido a Ask Different! Es posible que desee compartir su secuencia de comandos para que otros usuarios también puedan beneficiarse de su solución.
Glorfindel
0

Mi situación involucra dos copias de Eclipse instaladas en MacOS Mojave 10.14.5. La primera copia fue autorizada con el firewall de MacOS. La segunda copia siempre presentaría el mensaje "aceptar conexiones entrantes". Elegir "Aceptar" continuaría presentando el mensaje después de cada reinicio, aparentemente la configuración del firewall no se actualizó.

La solución fue abrir las Preferencias del Sistema MacOS -> Seguridad y Privacidad -> Firewall, desbloquear la pantalla, Opciones de Firewall. Seleccione Eclipse.app "Permitir conexiones entrantes" y elimínelo con el botón "-". La próxima vez que seleccioné "Permitir" en el mensaje "aceptar conexiones entrantes" de Eclipse fue la última.

Les Grieve
fuente
-2

La solución para mí fue simplemente desactivar el firewall por completo. Es extremadamente común crear piezas de software habilitadas para la web que, por supuesto, no están firmadas porque las está compilando de forma nativa.

Abra el centro de atención con CMD + Barra espaciadora y busque "privacidad" y seleccione "Seguridad y privacidad". Luego cambie a la pestaña "Firewall" y desactive el firewall allí.

anon58192932
fuente
2
Esa parece ser una solución bastante pobre para la mayoría de las personas a menos que sepan lo que están haciendo. Los cortafuegos están ahí por una buena razón, incluso en Mac.
RedYeti
Creo que querías decir "los firewalls son molestos, incluso en Mac". No todos carecen de educación en redes wifi abiertas en aeropuertos con todos sus puertos abiertos descargando virus de sitios de distribución de malware. Mi respuesta soluciona correctamente el problema y evita las estúpidamente molestas ventanas emergentes de Apple. Cada vez que recompila un binario que usa la red, aparece una ventana emergente que es absolutamente inexcusable. La ventana emergente es solo otra forma molesta de que Apple intente criar a personas sin educación mientras deja a los desarrolladores en un estado alto y seco.
anon58192932
1
Estoy de acuerdo, no todos no tienen educación. Sin embargo, sobre este tema, la gran mayoría de las personas lo son. Incluso aquellos que no lo estén deberían saber mejor que sacar el componente principal de seguridad de la red. Por lo menos, advertir a las personas de las posibles consecuencias hubiera sido bueno. Simplemente apagando el firewall no lo consideraría una "solución" sino una solución muy hacky.
RedYeti