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]
- TLS con extensión de indicación de nombre de servidor (RFC 3546) en Android
- Comunicación de servicio web Https de Android (SSL / TLS 1.2)
- Certificado de pinning no funciona con OkHttp en Android
- SSLProtocolException haciendo una conexión https
- Aplicación androide "Sin certificado par"
¿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
- Cadena de confianza de Android SSL con certificados intermedios (Apache HttpClient 4.X)
- los medios de comunicación subiendo a la nube utilizando url interup firmado debido a algunos problemas de certificado ssl?
- Pinzado de certificado SSL con Picasso
- Keystore SHA1 diferente de cert.rsa SHA1 de APK
- Aplicación de Android que trabaja en WIFI y 3G (Sin proxy), pero no funciona en 3G (Si proxy y puerto están asignados)
- OKhttp: SSLProtocolException: Protocolo de enlace SSL finalizado
- Error de Android en webview.loadUrl () - Ancla de confianza para la ruta de certificación no encontrada
- Autenticación SSL de dos vías en android
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.
- Error de aserción (scn == 3 || scn == 4) en void cv :: cvtColor (cv :: InputArray Android
- No se admiten expresiones Lambda -source 1.7 (Android Studio)