0 votos

¿Por qué recibo un error SSL en mi portal cautivo?

He configurado un portal cautivo en un punto de acceso inalámbrico. Si utilizo un portátil para conectarme a él, el portátil muestra un navegador que me dice que inicie sesión en el portal cautivo. Puedo abrir cualquier navegador en el portátil (IE, Chrome, Firefox) y funciona bien.

Con mi Samsung Galaxy S8 (Android 9), cuando me conecto al punto de acceso inalámbrico, Android comprueba automáticamente los portales cautivos, lo mismo que hace cualquier otro dispositivo hoy en día. Como lo detecta, también abre un navegador e intenta cargar la página de inicio de sesión, y en mi teléfono, muestra un error de certificado SSL. Otros teléfonos Android no tienen este error.

enter image description here

Si le digo a mi teléfono que permanezca conectado al WiFi a pesar de no haber iniciado sesión, y abro Chrome en mi teléfono, se carga exactamente la misma redirección del portal cautivo sin ningún problema. Está claro que, sea cual sea el navegador interno que aparece en mi teléfono, no es el navegador Chrome normal, ya que éste funciona bien. Tampoco parece ser la aplicación "Internet" con la que viene mi teléfono, ya que tampoco muestra ningún error SSL.

¿Qué navegador utiliza mi Galaxy S8 para detectar los portales cautivos? ¿Por qué tiene un error SSL cuando otros navegadores y dispositivos no lo tienen? Cómo puedo empezar a depurar esto?

Nota: Mi certificado SSL fue generado por LetsEncrypt. Apunta a http://ocsp.int-x3.letsencrypt.org como servidor para verificar que el cert no ha sido revocado. Añadí este dominio a la lista de jardín amurallado (bypass) de mi portal cautivo, para que las conexiones a ese dominio NO sean redirigidas, pero no ayudó.

1voto

John Puntos 111

Después de una tonelada de investigación, finalmente lo descubrí.

En primer lugar, un resumen rápido: El trabajo del portal cautivo es interceptar cualquier petición a Internet, y redirigirla a la página de inicio de sesión del portal cautivo. Como mi página de acceso es cprewrite.hyperlinkinc.ca, un sitio web remoto, tuve que añadirlo a la lista blanca. Cualquier petición a ese dominio se conectará realmente. Esto funciona muy bien.

El problema es que cuando el usuario es redirigido a esa página web, el HTML de la página web hace referencia a algunos recursos externos. Mi página se basaba en bootstrap para algunos formatos css. Mi bootstrap estaba almacenado localmente, en cprewrite.hyperlinkinc.ca, así que eso no era un problema. Desafortunadamente, cuando leo el código fuente de bootstrap (bootstrap.min.css), una de las primeras líneas dice:

*/@import url("https://fonts.googleapis.com/css?family=Lato:400,700,400italic");

Básicamente, bootstrap hace referencia a un recurso externo para sus fuentes. Esto hace que el Galaxy S8 intente cargar el recurso. Como el enlace es un enlace HTTPS (no HTTP), espera recibir un certificado SSL para fonts.googleapis.com. Como fonts.googleapis.com no estaba en la lista blanca, mi portal cautivo redirigía la solicitud a sí mismo, devolviendo su propio certificado SSL, en lugar del esperado.

Algunos navegadores, como el navegador habitual Google Chrome en Android, simplemente fallan de forma silenciosa. Otros, como este navegador In-App, fallan de forma estrepitosa y muestran una advertencia de SSL.

Todavía no estoy del todo seguro de qué es ese navegador que aparece cuando se detectan portales cautivos, pero la cuestión es ahora discutible, ya que sé por qué no le gustó mi página.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X