¿Quieres que la aplicación acepte la conexión de red entrante?

Tengo dos binarios C que intentan abrir la conexión de red para la comunicación.

Esto es para la comunicación externa. Cuando lo ejecuto por primera vez, el firewall de OS X muestra el mensaje tal como aparece en el título. ¿Cómo puedo deshacerme de esto?

Sospecho que esto está relacionado con la firma de código? ¿Cómo hacer un código de firma de este binario?

Básicamente, tengo que construir este binario en una máquina Mac y distribuir la tienda de aplicaciones externa.

¿Cómo puedo deshacerme de la ventana emergente del firewall si el firewall OS X está habilitado en la máquina?

Puede resolver esto firmando el binario de la aplicación ofensiva usted mismo.

Disclaimer: Signing an application yourself will make an application appear more secure to the operating system, when in reality it isn't. Only sign applications that you are 100% sure are not spyware or otherwise malicious. If you have any doubts, just uninstall/reinstall. 

Parte 1: Crear una identidad de firma

La solución que busco, firmar la aplicación yo mismo, requiere que cree una Identidad de Firma, también conocida como Certificado de Firma. Esto es muy fácil de hacer:

  1. Abra Aplicaciones> Utilidades> Acceso a llavero.
  2. En el menú Acceso a Llaves, elija Asistente de certificados> Crear un certificado.
  3. Rellene un nombre para el certificado. Este nombre aparece en la utilidad de Acceso a Llaves como el nombre del certificado. Este es también el nombre que usará cuando haga referencia a este certificado. Personalmente, utilicé el nombre “Mi identidad de firma”.
  4. Seleccione Código de firma en el menú Tipo de certificado.
  5. Seleccione Raíz autofirmada en el menú emergente Tipo.
  6. Marque la checkbox Permitirme anular los valores predeterminados.
  7. Haga clic en Continuar.
  8. Especifique un número de serie para el certificado. Cualquier número funcionará siempre que no tenga otro certificado con el mismo nombre y número de serie.
  9. Haga clic en Continuar.
  10. Rellene la información para el certificado. Puedes usar datos reales o falsos, yo usé datos reales personalmente.
  11. Haga clic en Continuar.
  12. Acepte los valores predeterminados para el rest de los diálogos.

Una vez completado, verá su certificado en Keychain Access. Verifica el nombre que elegiste, y has terminado con este paso. ¡Bien hecho!

Paso 2: (Re-) Firma tu solicitud

Ahora tienes que firmar tu solicitud. Para hacer esto, abre Terminal nuevamente y usa el siguiente comando:

 codesign -s "My Signing Identity" -f /path/to/your/binary/app 

Aparecerá un cuadro de diálogo, haga clic en “Permitir”.

Ahora inicie su aplicación de nuevo. Obtendrá el diálogo de aceptar conexiones entrantes una última vez. Haga clic en “Permitir”.

introduzca la descripción de la imagen aquí

¡De ahora en adelante ya no deberías recibir las advertencias! Ahora es posible disfrutar de la seguridad de su firewall activo sin el inconveniente de tener que hacer clic en “permitir” constantemente.

Crédito: La fuente original que sirvió como punto de partida para esta guía de solución actualizada y anotada fue http://silvanolte.com/blog/2011/01/18/do-you-want-the-application-to-accept-incoming -conexiones de red/

Estaba tratando de aplicar esta solución para reparar python como la usaba Arduino OTA, encontré otra solución que describía la firma automática de la aplicación que decía $ (que python) como la ruta del archivo para firmar, pero en mi caso, se resolvió a / usr / bin / python. Autofirmar esto no solo me obligó a pasar al modo Rootless para permitir la escritura en / usr / bin, sino que, cuando regresé y lo probé, ¡Python pedía permiso para permitir las conexiones entrantes!

El archivo python correcto para autofirmarse es de hecho (en mi caso al menos) /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app

Una vez que autofirmé esta ruta de archivo correcta, el proceso Arduino OTA ya no requería que haga clic en Permitir conexiones entrantes: ¡Hoorah!

Espero que ayude a alguien.