¡Hola!
Tras más de un año implementando mejoras, corrigiendo fallos y haciendo pruebas de todo tipo, se acaba de liberar la versión 2.1 del servidor de NVDA Remote. Más abajo explicamos los principales cambios, que en esta ocasión se centran en la seguridad, la estabilidad y el soporte de versiones de Python actuales.
El servidor de NVDA Remote, también llamado NVDA Remote Server, es una versión libre y de código abierto creada a partir de un exhaustivo estudio del código fuente y los protocolos del complemento NVDA Remote. Funciona igual que el servidor alojado en nvdaremote.com, con la diferencia de que este se puede instalar en cualquier lugar y en casi cualquier plataforma. De hecho, nosotros disponemos de una copia totalmente operativa, a la que puedes conectarte escribiendo «remote.nvda.es» en el campo «Equipo o servidor» del diálogo de conexión de NVDA Remote. Este servidor nació hace unos años, y ha ido evolucionando para corregir errores, ser cada vez más eficiente y brindar una experiencia rápida y segura a todos sus usuarios. Estos son los cambios de la versión 2.1:
- Los clientes que intenten unirse a un canal enviando una petición mal formada o intenten unirse estando ya unidos recibirán un mensaje de error.
- La función generadora de claves no hará nada si el cliente que la llama ya está unido a un canal.
- Ahora, se separan el proceso de conexión y la negociación SSL con cada cliente. Este cambio mejora la estabilidad, ya que se producen muchísimas menos caídas si el servidor recibe conexiones no cifradas. Esto debería acabar con el problema de las microcaídas en Windows.
- Ya no es necesario reiniciar el servidor si se actualiza el certificado incorporado. Los cambios se aplicarán a las nuevas conexiones, por lo que será suficiente con que todos los usuarios se desconecten.
- Se añade el nivel 4 de registro, que graba en el archivo log o muestra por consola todo el tráfico de todas las sesiones del servidor. Se recomienda usarlo en entornos de prueba y sólo durante breves periodos de tiempo. Al activar este modo, el usuario recibirá un mensaje de aviso cuando se conecte, incluso si el mensaje de bienvenida está desactivado.
- Ahora, las claves generadas tendrán 9 dígitos.
- El servidor emitirá el mensaje nvda_not_connected si el cliente se une a un canal vacío e intenta enviar pulsaciones de teclado. En la práctica, esto se traduce en que el usuario escuchará el mensaje «El NVDA remoto no está conectado» cada vez que pulse una tecla.
- En Centos 8, se usa Python 3.9 en lugar de Python 3.8.
- Los binarios para Windows están construidos con Python 2.7.18, 3.8.10 y 3.10.1. La versión basada en Python 2 sigue funcionando sin problema en Windows XP. La versión basada en Python 3.8 está pensada para usuarios de Windows 7, ya que Python 3.10 sólo soporta versiones de Windows de la 8.1 en adelante.
- Los binarios para Windows basados en Python 3 incluyen la versión 10.0.22000 de las bibliotecas universales CRT, las bibliotecas redistribuíbles de Visual C++ 14.29.30133 y OpenSSL 3.0.0.
- Los binarios para Windows basados en Python 2 ahora incluyen OpenSSL 1.1.1L.
- Ahora, todos los paquetes para Linux dependen de Python 3. Aunque el código todavía funciona perfectamente en Python 2, el servidor abandona esta versión, ya sin soporte. Todavía existe un paquete para Debian basado en Python 2 por si fuera necesario.
- Se añade una nueva opción de configuración: keyfile. Gracias a este cambio, el servidor ahora puede cifrar las comunicaciones con certificados SSL que tienen su clave pública y privada separadas en dos archivos. Si echabas de menos usar Let’s Encrypt con el servidor, ahora puedes hacerlo.
- La opción pemfile se renombra a certfile para que su uso junto a la anterior quede más claro.
- Ahora, los certificados generados con la utilidad NVDARemoteCertificate son más fuertes y ligeros. Se cambia el tradicional algoritmo RSA por Ecdsa, utilizando una curva de 384 bits. Esto rompe la compatibilidad con Centos 6, que utiliza una versión de OpenSSL demasiado antigua. El certificado incorporado de serie en el servidor se ha renovado con este algoritmo. Este cambio aumenta la resistencia a ataques de fuerza bruta, y reduce la capacidad de procesamiento necesaria para cifrar las comunicaciones.
- Se usa is_set en vez de isSet en los objetos de tipo Event para evitar una alerta de obsolescencia emitida por Python 3.10.
- Se eliminan los paquetes para Debian 7 y Centos 6. En su lugar, se han añadido nuevos paquetes capaces de ejecutar el servidor en entornos donde Systemd no funciona, como contenedores y sistemas operativos virtualizados que comparten núcleo con el anfitrión.
La última vez que actualizamos el servidor dijimos que ya no se compilaría con Python 2.7, y que dejaría de soportar Windows XP y Centos 6. Sin embargo, en esta actualización se incluyen importantes mejoras de seguridad de las que todo el mundo debería beneficiarse. Una de estas mejoras rompe la compatibilidad con Centos 6, por lo que es el único sistema donde no se podrá instalar esta actualización.
Para descargar esta nueva versión, puedes visitar la página de la publicación en GitHub, o esta carpeta de Google Drive con todas las versiones, que hemos creado hace poco. Te recomendamos leer la guía de usuario del servidor de NVDA Remote, que se ha actualizado recientemente para mencionar algunos de los cambios que se han descrito en esta entrada.
El desarrollo del servidor de NVDA Remote se realiza íntegramente desde la comunidad de NVDA en español. Si te gusta, contribuye con una pequeña donación o visita nuestra tienda y compra alguno de los productos que ofrecemos.
¡Feliz domingo!