Linphone Android: Error de apretón de manos de TLS con certificado autofirmado

Estoy tratando de usar un certificado autofirmado para configurar TLS en Linphone Android para poder comunicarse con el servidor SIP FreeSWITCH. Sin embargo, el protocolo de enlace SSL falla con los siguientes errores:

Canal [0x9ec3c000]: fallo en el protocolo de confirmación SSL: X509 – Error en la verificación del certificado, por ejemplo, CRL, CA o comprobación de firma No se puede conectar a [TLS: //52.3.207.224: 5061]

¿Puede alguien por favor sugerir cuál es el camino a seguir para depurar este problema? O cómo podemos configurar el certificado autofirmado en Linphone Android.

NOTA: No quiero deshabilitar la verificación del certificado del servidor TLS como se sugiere a continuación

[Sip] verify_server_certs = 0

Es porque cert auto-firmado no puede ser reconocido por las CA de terceros que la aplicación oficial de linphone preconfigurado.

Linphone utiliza su propia tienda de CA de raíz donde se verificará el cert del servidor utilizado por linphone cuando recibió cert de su servidor sip.

Si no desea deshabilitar la verificación de cert de servidor (es bueno evitar el ataque Man-in-the-middle), y como no hay CA que preconfigurado de linphone pueda verificar su cert, debe crear su propia CA y agregar En la lista de CA de linphone.

Puede encontrar la lista de CA en linphone android fuente: res/raw/rootca.pem sólo tiene que agregar su CA en él y res/raw/rootca.pem a compilar.

No estoy familiarizado con linphone, pero creo que es el camino a seguir.

Algunos enlaces útiles:

Creación de su propia autoridad de certificados SSL (y Dumping Self Signed Certs)

Uso de certificados auto-firmados con Android Linphone

Hay diferentes soluciones a este problema:

  • Si tiene acceso de shell a su servidor Linphone, puede instalar un certificado adecuado, ya sea comprar uno o (lo que recomiendo) utilizar uno libre de Let's Encrypt

  • Si eso no es posible, instale el certificado autofirmado en su almacén de llaves de Android: Descargue el certificado (si Linphone ofrece un gui web, puede descargarlo con Chrome en formato PEM, haciendo clic en el símbolo de bloqueo en la barra de direcciones) y Póngalo en su tarjeta SD. Luego vaya a Configuración de Android / Seguridad / Administración de certificados / Instalar desde el almacenamiento y seleccione su archivo. Es probable que tenga una notificación permanente, sin embargo, que su red puede ser supervisada.

  • Si no desea esa notificación y tiene acceso root, siga el paso anterior y mueva el archivo recién agregado de /data/misc/keychain/cacerts-added/ to /system/etc/security/cacerts/ . A continuación, reinicie el dispositivo y el mensaje debe desaparecer.

  • Certificado de Cliente de Webview de Android, Autenticación Mutua, SSL sobre Webview
  • Https conexión Android
  • CertPathValidatorException: Ancla de confianza para ruta de certificación no encontrada
  • Android Studio / Intellij, Gradle Error: Causa: no homologado
  • Variedad de errores HTTPs al comunicarse con el servidor desde la aplicación Android
  • Deshabilitar SSL como un protocolo en HttpsURLConnection
  • SSL SSLSockets con certificados autofirmados
  • NoSuchAlgorithmException de Android: "no se ha encontrado la implementación SSL de SSLContext"
  • ¿Cómo conectar un socket SSL a través de un proxy HTTP?
  • Consumir servicio WCF en SSL en Android
  • La autenticación mutua de SSL FAIL en Android Client acepta el certificado de servidores pero el servidor no obtiene el certificado de cliente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.