Notas técnicas sobre el Local IO Bridge en Salto Space
¿Qué es el Local IO Bridge?
Local IO Bridge es un servicio de Windows ligero desarrollado por Salto que resuelve un problema de conectividad fundamental: el servidor Space, que se ejecuta en una máquina remota, no tiene forma directa de comunicarse con dispositivos USB conectados físicamente a una máquina cliente. Local IO Bridge se ejecuta localmente en la máquina cliente y actúa como un relé, conectando el servidor Space con dispositivos USB, como editores de tarjetas USB y PPD.
Consulta Requisitos del sistema para obtener una introducción al Local IO Bridge y su función en la arquitectura de Space.
Local IO Bridge expone una API REST local a la aplicación web de Space que se ejecuta en el navegador, la cual organiza la comunicación. El navegador indica a Local IO Bridge que abra una conexión de relé entre el servidor Space y el dispositivo USB, a través de la cual el servidor Space puede operar el dispositivo directamente.
Comunicación de Local IO Bridge
¿Cuándo se requiere?
Local IO Bridge solo es necesario en máquinas donde hay un dispositivo USB conectado físicamente.
| Escenario | ¿Se requiere Local IO Bridge? |
|---|---|
| Máquina cliente con editor de tarjetas USB | SÍ |
| Máquina cliente con PPD USB | SÍ |
| Máquina solo con navegador (sin dispositivo USB conectado) | No |
| Máquina que utiliza un editor de tarjetas conectado por Ethernet (IP) | No: los editores de tarjetas IP se comunican directamente con el servidor Space a través de la red |
Instalación
| Elemento | Detalles |
|---|---|
| Sistema operativo | Windows 10, Windows 11 o Windows Server 2016 o superior |
| Dependencia de software | .NET Framework 4.8.0 (instalado automáticamente si no está presente) |
| Instalador | Descárgalo desde la aplicación web de Space o desde la carpeta ..\dist |
| Instalación | Haz doble clic en el instalador para ejecutar el asistente de configuración guiada. Para implementaciones desatendidas, también se admite la instalación silenciosa: setup_saltolocaliobridge.exe -quiet -InstallDir="C:\path" |
| Inicio del servicio | Se inicia automáticamente con Windows y debe estar ejecutándose antes de realizar cualquier operación USB |
Consideraciones sobre red y firewall
Local IO Bridge solo se vincula a localhost (127.0.0.1).
Sus puertos de API REST locales no son accesibles desde otras máquinas en la red, por lo que no se requieren reglas de firewall de entrada a nivel de red.
Puertos locales (navegador-Local IO Bridge)
En el modo predeterminado, Local IO Bridge selecciona aleatoriamente un puerto HTTP y un puerto HTTPS en cada inicio de los siguientes rangos permitidos:
| Rango |
|---|
| 50000—50009 |
| 50110—50119 |
| 50220—50229 |
| 50330—50339 |
| 50440—50449 |
| 50550—50559 |
| 50660—50669 |
| 50770—50779 |
| 50880—50889 |
| 50990—50999 |
Si hay un firewall local, este debe permitir que el proceso de Local IO Bridge escuche en los puertos dentro de estos rangos.
En modo avanzado, se pueden configurar números de puerto fijos. Consulta la sección Configuración del modo avanzado para más detalles.
Conexión de salida (Local IO Bridge-servidor Space)
Local IO Bridge establece una conexión WebSocket de salida al servidor Space en el puerto TCP 8102 (predeterminado, configurable). Cuando Space está configurado con HTTPS, esta conexión se asegura mediante WSS con el certificado firmado por una CA de confianza del servidor Space.
Configuración del modo avanzado
De forma predeterminada, Local IO Bridge funciona nada más instalarlo sin necesidad de configuración: selecciona puertos aleatorios de los rangos permitidos y utiliza su propio certificado autofirmado incorporado para el endpoint HTTPS local. En entornos gestionados, un administrador puede querer:
- Fijar el puerto HTTPS a un valor conocido, evitando el escaneo de puertos por parte del navegador.
- Utilizar un certificado firmado por una CA de confianza para el endpoint HTTPS local en lugar del autofirmado incorporado.
Ambas opciones se configuran creando un archivo llamado service.ini en la carpeta de instalación de Local IO Bridge.
El archivo se lee una vez al iniciarse y el servicio debe reiniciarse después de cualquier cambio.
Solo un usuario con derechos de administrador puede crear o modificar este archivo.
Si service.ini no existe, Local IO Bridge mantiene el comportamiento predeterminado.
La configuración del puerto y del certificado es independiente: es posible configurar solo el puerto, solo el certificado, o ambos.
Configuración del puerto
| Llave | Descripción |
|---|---|
HttpsPort | Puerto HTTPS fijo para Local IO Bridge. Debe estar dentro de uno de los rangos permitidos listados en la sección Puertos locales. Cuando se establece, el puerto HTTP no se abre. |
Configuración del certificado
| Llave | Valores | Descripción |
|---|---|---|
HttpsCertManual | 0 / 1 | 0 = usar el certificado autofirmado incorporado (predeterminado).1 = usar un certificado del Almacén de certificados de Windows. |
HttpsCertStoreName | Nombre del almacén | Almacén de certificados en el que buscar dentro de LocalMachine.Predeterminado: My. |
HttpsCertIdentificationMethod | 0 / 1 / 2 | Método para identificar el certificado: 0 = Subject CN, 1 = Subject DN (predeterminado), 2 = Issuer. |
HttpsCertIdentificationMatchValue | Cadena | Valor que debe coincidir con el método de identificación seleccionado. |
HttpsCertSelectionStrategy | 0 / 1 | Cuando coinciden varios certificados: 0 = fecha NotBefore más reciente (predeterminado), 1 = fecha NotAfter más tardía. |
Requisitos del certificado al usar el modo manual (HttpsCertManual=1):
- Debe estar firmado por una Autoridad de Certificación en la que confíe la máquina cliente.
- No debe haber caducado.
- Debe incluir
IP Address=127.0.0.1en el campo Subject Alternative Name (SAN), ya que Local IO Bridge solo se vincula a localhost.
Cuando HttpsCertManual=1, Local IO Bridge es accesible solo a través de HTTPS: el puerto HTTP no se abre.
- Por ejemplo:
[Https]
HttpsPort=50110
HttpsCertManual=1
HttpsCertStoreName=My
HttpsCertIdentificationMethod=0
HttpsCertIdentificationMatchValue=my-server.comtoso.com
HttpsCertSelectionStrategy=0Esta configuración fija el puerto HTTPS en 50110, utiliza un certificado del Almacén de certificados de Windows y lo identifica mediante el Subject CN coincidente con my-server.comtoso.com desde el almacén My, seleccionando el que tiene la fecha NotBefore más reciente si existen varias coincidencias.
Manejo de datos y privacidad
Una propiedad clave de Local IO Bridge es que nunca tiene acceso a los datos que transmite. Toda la comunicación entre el servidor Space y el dispositivo USB (incluidos los datos de tarjetas y credenciales) está cifrada de extremo a extremo mediante DTLS 1.2 antes de entrar en el relé. Local IO Bridge solo reenvía bytes cifrados. No tiene llaves para descifrar el contenido y no puede leerlo, inspeccionarlo ni manipularlo de ninguna manera.
Local IO Bridge es, por diseño, un relé ciego.
Manejo de datos y privacidad
Los únicos datos que pasan entre el navegador y Local IO Bridge (a través de la API REST local) son información de control no sensible: comandos de enumeración de puertos y de gestión de relés. Nunca hay datos de tarjetas ni credenciales presentes en esta interfaz.
Resumen de seguridad
| Aspecto | Detalles |
|---|---|
| Relé ciego | Local IO Bridge no puede leer ni manipular datos de tarjetas; están cifrados de extremo a extremo (DTLS 1.2) entre el servidor Space y el dispositivo USB |
| API REST local | Los comandos intercambiados entre el navegador y Local IO Bridge no son sensibles (enumeración de puertos, control de relé). No pasan datos de tarjetas ni credenciales por esta interfaz |
| Certificado HTTPS | De forma predeterminada, el endpoint HTTPS local utiliza un certificado autofirmado. En modo avanzado, se puede utilizar un certificado firmado por una CA de confianza del Almacén de certificados de Windows. Ese certificado debe incluir IP Address=127.0.0.1 en su campo SAN |
| Conexión WSS | Cuando Space está configurado con HTTPS, la conexión WebSocket entre Local IO Bridge y el servidor Space utiliza el certificado firmado por una CA de confianza del servidor Space |
| Solo localhost | Los puertos de la API REST de Local IO Bridge están vinculados a localhost (127.0.0.1): no son accesibles desde otras máquinas en la red |