1 votos

No se reintenta la conexión con el servidor DoT

Estoy ejecutando mi propio servidor DNS-sobre-TLS bajo mi dominio (dns.example.com). En mi Motorola G100, que ejecuta Stock Android 11, puedo establecer el DNS privado a este dominio y funciona. Esto funciona en mis máquinas Linux, en otros dos Androids (un Motorola con Android 10 y un Samsung con Android 10), y también en dos routers diferentes (AVM FritzBox puede usar DoT como upstream).

El servidor no es culpable, el certificado es válido y todos los dispositivos funcionan como deberían, es decir, hasta que el servidor se reinicie o se bloquee de otra manera. Entonces, por supuesto, recibo la notificación de que "no puede acceder al servidor DNS privado".

Las máquinas Linux se recuperan y simplemente vuelven a intentar conectarse, al igual que los routers. Pero los teléfonos Android no quieren reintentar aunque sepa con seguridad que la conexión funciona.

Al desactivar el DNS privado y volver a activarlo con mi dominio, se muestra el siguiente registro (IPs eliminadas)

09-30 19:32:46.091  1144 20197 W resolv  : Validating DnsTlsServer <MY_IPV4> with mark 0xf006b
09-30 19:32:46.091  1144 20198 W resolv  : Validating DnsTlsServer <MY_IPV6> with mark 0xf006b
09-30 19:32:46.138  1144 20197 W resolv  : SSL_connect ssl error =1, mark 0xf006b: No such file or directory
09-30 19:32:46.138  1144 20198 W resolv  : SSL_connect ssl error =1, mark 0xf006b: No such file or directory
09-30 19:32:46.138  1144 20197 W resolv  : TLS Handshake failed
09-30 19:32:46.138  1144 20198 W resolv  : TLS Handshake failed
09-30 19:32:46.138  1144 20197 W resolv  : query failed
09-30 19:32:46.138  1144 20197 W resolv  : validateDnsTlsServer returned 0 for <MY_IPV4>
09-30 19:32:46.138  1144 20198 W resolv  : query failed
09-30 19:32:46.138  1144 20198 W resolv  : validateDnsTlsServer returned 0 for <MY_IPV6>
09-30 19:32:46.138  1144 20197 W resolv  : Validation failed
09-30 19:32:46.138  1144 20198 W resolv  : Validation failed

No sé por qué me dice que el apretón de manos falla, todos los demás dispositivos (o kdig +tls ) pueden conectarse sin problemas. Desde el reinicio del servidor hasta ahora, no se ha cambiado ninguna configuración, certificado o versión de software.

Mi opinión es que Android almacena en caché la conexión y "recuerda" que falló en algún momento en el pasado y ni siquiera intenta conectarse de nuevo. He probado a reiniciar, apagar, modo avión, otro DoT (dns.google funciona), desactivar el DoT pero nada arregla este comportamiento.

0 votos

Es difícil adivinar la causa del fallo en este punto sin hacer un poco de solución de problemas de red en el dispositivo. Podría ser debido a caché de DNS negativo del dominio de su servidor.

0 votos

No, en realidad es la verificación de certificados mal implementada en Android.

1voto

HorusKol Puntos 128

Aparentemente, Android (incluso las versiones más nuevas) no puede lidiar con el tipo de certificado que Let's Encrypt genera por defecto.

La solución es una combinación del Foro de Let's Encrypt y la configuración --preferred-chain="ISRG Root X1" para certbot.

Si usas caddy como servidor, puedes establecerlo en las opciones globales de Caddyfile:

{
...
  preferred_chains {
    root_common_name "ISRG Root X1"
  }
...
}

Hay que forzar la renovación de los certificados/subdominios afectados borrando los archivos correspondientes en el directorio de datos de caddy. (Ten cuidado con la limitación de la tasa si generas muchos certificados a la vez).

0 votos

Tal vez esto esté relacionado con la expiración del certificado root que Let's Encrypt utilizaba anteriormente (DST Root CA X3) y que afecta a muchos sitios, incluyendo Stack Exchange .

0 votos

Sí, pero el certificado que estoy utilizando sigue siendo válido. Todos los navegadores o clientes pueden soportar la cadena dual (?) pero la biblioteca para la validación DoT no soporta este tipo de certificado. No tiene nada (bueno, sólo tangencialmente) que ver con la invalidación de un certificado.

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