Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: IoT Edge 1.5
Importante
IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS finaliza su ciclo de vida el 12 de noviembre de 2024. Si está usando una versión anterior, consulte Actualización de IoT Edge.
En este artículo se proporcionan instrucciones para configurar una conexión de confianza entre dispositivos de bajada y puertas de enlace transparentes de IoT Edge. En un escenario de puerta de enlace transparente, uno o varios dispositivos envían mensajes a través de un único dispositivo de puerta de enlace que mantiene la conexión a IoT Hub. En este artículo, los términos puerta de enlace e puerta de enlace de IoT Edge significan un dispositivo IoT Edge configurado como puerta de enlace transparente.
Nota:
Un dispositivo de bajada envía datos directamente a Internet o a dispositivos de puerta de enlace (habilitado o no con IoT Edge). Un dispositivo secundario puede ser un dispositivo de bajada o un dispositivo de puerta de enlace en una topología anidada.
Configuras una conexión de puerta de enlace transparente en tres pasos. En este artículo se explica el tercer paso.
Configure el dispositivo de puerta de enlace como servidor para que los dispositivos de bajada puedan conectarse a él de forma segura. Configure la pasarela para recibir mensajes de dispositivos aguas abajo y enrutarlos al destino correcto. Para realizar esos pasos, consulte Configuración de un dispositivo IoT Edge para que actúe como puerta de enlace transparente.
Cree una identidad de dispositivo para el dispositivo de bajada para que pueda autenticarse con IoT Hub. Configure el dispositivo de bajada para enviar mensajes a través del dispositivo de puerta de enlace. Para conocer estos pasos, consulte Autenticación de un dispositivo de bajada en Azure IoT Hub.
Conecte el dispositivo de bajada al dispositivo de puerta de enlace y empiece a enviar mensajes.
En este artículo se explican los componentes de conexión de dispositivos aguas abajo, como:
- Aspectos básicos de seguridad de la capa de transporte (TLS) y certificados
- Bibliotecas TLS que funcionan en diferentes sistemas operativos y controlan los certificados de forma diferente
Recorrerá los ejemplos de Azure IoT en su idioma preferido para que su dispositivo envíe mensajes a la puerta de enlace.
Requisitos previos
Adquiera lo siguiente para preparar el dispositivo de bajada:
Un dispositivo de bajada.
Este dispositivo puede ser cualquier aplicación o plataforma con una identidad creada en Azure IoT Hub. En muchos casos, las aplicaciones usan el SDK de dispositivo IoT de Azure. Un dispositivo descendente también puede ser una aplicación que se ejecuta en un dispositivo gateway de IoT Edge.
Más adelante, en este artículo se muestra cómo conectar un dispositivo IoT como un dispositivo descendente. Si quiere usar un dispositivo de IoT Edge como dispositivo de bajada, consulte Conexión conjunta de dispositivos de Azure IoT Edge para crear una jerarquía (borde anidado).
Un archivo de certificado de entidad de certificación raíz.
Este archivo se usa para generar el certificado de CA de Edge en Configurar un dispositivo IoT Edge para que actúe como puerta de enlace transparente, y esté disponible en el dispositivo de bajada.
El dispositivo de bajada usa este certificado para comprobar la identidad del dispositivo de puerta de enlace. Este certificado de confianza es la conexión de seguridad de la capa de transporte (TLS) al dispositivo de puerta de enlace. Para obtener más información sobre el uso, consulte Proporcionar el certificado de entidad de certificación raíz.
Cadena de conexión modificada que apunta al dispositivo de puerta de enlace.
Para obtener información sobre cómo cambiar la cadena de conexión, consulte Autenticación de un dispositivo de bajada en Azure IoT Hub.
Nota:
Los dispositivos IoT registrados en IOT Hub pueden usar módulos gemelos para aislar diferentes procesos, hardware o funciones en un único dispositivo. Los gateways de IoT Edge admiten conexiones de módulos descendentes mediante la autenticación de claves simétricas, pero no la autenticación de certificados X.509.
Descripción de los aspectos básicos del certificado y TLS
La conexión segura de dispositivos aguas abajo a IoT Edge es similar a otras formas de comunicación segura de cliente y servidor por Internet. Un cliente y un servidor se comunican de forma segura en Internet mediante la Seguridad de la capa de transporte (TLS). TLS usa construcciones estándar de infraestructura de clave pública (PKI) denominadas certificados. TLS es una especificación detallada que trata muchos temas relacionados con la protección de dos puntos de conexión. En esta sección se resumen los conceptos que necesita para conectar dispositivos de forma segura a una puerta de enlace de IoT Edge.
Cuando un cliente se conecta a un servidor, el servidor presenta una cadena de certificados denominado cadena de certificados de servidor. Normalmente, una cadena de certificados tiene un certificado de entidad de certificación raíz (CA), uno o varios certificados de ENTIDAD de certificación intermedios y el certificado del servidor. El cliente confía en el servidor mediante la comprobación criptográfica de toda la cadena de certificados de servidor. Este proceso se denomina validación de la cadena de servidores. El cliente también desafía al servidor para demostrar que tiene la clave privada para el certificado de servidor, denominada prueba de posesión. Juntos, la validación de la cadena de servidores y la prueba de posesión se denominan autenticación de servidor. Para validar una cadena de certificados de servidor, el cliente necesita una copia del certificado de entidad de certificación raíz que se usa para emitir el certificado del servidor. Al conectarse a sitios web, los navegadores vienen preconfigurados con certificados de autoridades certificadoras comunes, por lo que el proceso para el cliente es fluido.
Cuando un dispositivo se conecta a Azure IoT Hub, el dispositivo es el cliente y el servicio en la nube de IoT Hub es el servidor. El servicio en la nube de IoT Hub utiliza un certificado de autoridad de certificación raíz llamado Baltimore CyberTrust Root, que está disponible públicamente y ampliamente utilizado. Dado que el certificado de entidad de certificación de IoT Hub ya está instalado en la mayoría de los dispositivos, muchas implementaciones de TLS (OpenSSL, Schannel, LibreSSL) la usan automáticamente durante la validación del certificado de servidor. Sin embargo, un dispositivo que se conecta a IoT Hub puede tener problemas al conectarse a una puerta de enlace de IoT Edge.
Cuando un dispositivo se conecta a una puerta de enlace IoT Edge, el dispositivo de bajada es el cliente y el dispositivo de puerta de enlace es el servidor. Azure IoT Edge le permite crear cadenas de certificados de puerta de enlace según sea necesario. Puede usar un certificado de CA pública, como Baltimore, o un certificado raíz de CA autofirmado (o interno). Los certificados de entidad de certificación pública suelen tener un costo, por lo que normalmente se usan en escenarios de producción. Los certificados de entidad de certificación autofirmados se prefieren para desarrollo y pruebas. Los certificados de demostración son certificados de entidad de certificación raíz autofirmados.
Cuando se usa un certificado de entidad de certificación raíz autofirmado para una puerta de enlace de IoT Edge, debe instalarlo en o proporcionarlo a todos los dispositivos de bajada que se conectan a la puerta de enlace.
Para más información sobre los certificados de IoT Edge y las implicaciones de producción, consulte Detalles de uso de certificados de IoT Edge.
Inclusión del certificado de entidad de certificación raíz
Para comprobar los certificados del dispositivo de puerta de enlace, el dispositivo de bajada necesita su propia copia del certificado de entidad de certificación raíz. Si usa los scripts del repositorio git de IoT Edge para crear certificados de prueba, el certificado de entidad de certificación raíz se denomina azure-iot-test-only.root.ca.cert.pem.
Si aún no lo ha hecho, mueva este archivo de certificado a cualquier directorio del dispositivo de bajada. Mueva el archivo instalando el certificado de autoridad de certificación en el almacén de certificados del sistema operativo o haciendo referencia al certificado en las aplicaciones que utilizan los SDK de Azure IoT.
Use un servicio como Azure Key Vault o una herramienta como Protocolo de copia segura para mover el archivo de certificado.
Instalación de certificados en el sistema operativo
Después de copiar el certificado de entidad de certificación raíz en el dispositivo descendente, asegúrese de que las aplicaciones que se conectan al gateway pueden acceder al certificado.
Instale el certificado de entidad de certificación raíz en el almacén de certificados del sistema operativo para que la mayoría de las aplicaciones puedan usarlas. Algunas aplicaciones, como Node.js, no usan el almacén de certificados del sistema operativo y, en su lugar, usan el almacén de certificados interno del entorno de ejecución de Node. Si no puede instalar el certificado en el nivel de sistema operativo, vaya a la sección Uso de certificados con SDK de IoT de Azure .
Instale el certificado de entidad de certificación raíz en Ubuntu o Windows.
Utilice los siguientes comandos para instalar un certificado de autoridad certificadora en un host de Ubuntu. En este ejemplo se usa el certificado azure-iot-test-only.root.ca.cert.pem de los artículos de requisitos previos y se supone que ha copiado el certificado en una ubicación del dispositivo de bajada.
sudo cp <file path>/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crt
sudo update-ca-certificates
Al terminar, verá un Actualizando certificados en /etc/ssl/certs... 1 agregado, 0 quitado; mensaje listo.
Uso de certificados con los SDK de Azure IoT
Los SDK de IoT de Azure se conectan a un dispositivo IoT Edge mediante sencillas aplicaciones de ejemplo. El objetivo de los ejemplos es conectar el cliente del dispositivo y enviar mensajes de telemetría del dispositivo a la puerta de enlace y, a continuación, cerrar la conexión y salir.
Antes de usar los ejemplos de nivel de aplicación, obtenga los siguientes elementos:
La cadena de conexión de IoT Hub, desde el dispositivo de bajada, se modificó para que apunte al dispositivo de puerta de enlace.
Los certificados necesarios para autenticar el dispositivo de bajada en IoT Hub. Para más información, consulte Autenticación de un dispositivo de bajada en Azure IoT Hub.
La ruta de acceso completa del certificado de entidad de certificación raíz que ha copiado y guardado en algún lugar del dispositivo de bajada.
Por ejemplo:
<file path>/azure-iot-test-only.root.ca.cert.pem
.
Ahora está listo para usar certificados con un ejemplo en el idioma que prefiera:
Esta sección proporciona una aplicación de ejemplo para conectar un cliente de dispositivo de Node.js de Azure IoT a una puerta de enlace IoT Edge. En el caso de las aplicaciones de Node.js, debe instalar el certificado de entidad de certificación raíz en el nivel de aplicación, tal como se muestra aquí. Las aplicaciones de Node.js no usan el almacén de certificados del sistema.
- Puede obtener el ejemplo para edge_downstream_device.js desde el repositorio de ejemplos del SDK de dispositivo IoT de Azure para Node.js.
- Asegúrese de que tiene todos los requisitos previos para ejecutar el ejemplo; para ello, revise el archivo readme.md.
- En el archivo edge_downstream_device.js, actualice las variables connectionString y edge_ca_cert_path.
- Consulte la documentación del SDK para obtener instrucciones sobre cómo ejecutar el ejemplo en el dispositivo.
Para entender el ejemplo que se está ejecutando, el siguiente fragmento de código contiene el modo en el que el SDK de cliente lee el archivo de certificado y lo usa para establecer una conexión TLS segura:
// Provide the Azure IoT device client via setOptions with the X509
// Edge root CA certificate that was used to setup the Edge runtime
var options = {
ca : fs.readFileSync(edge_ca_cert_path, 'utf-8'),
};
Prueba de la conexión de puerta de enlace
Ejecute este comando de ejemplo en el dispositivo de bajada para probar que puede conectarse al dispositivo de puerta de enlace:
openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts
Este comando comprueba la conexión a través de MQTTS (puerto 8883). Si usa un protocolo diferente, ajuste el comando para AMQPS (5671) o HTTPS (443).
La salida de este comando puede ser larga e incluye información sobre todos los certificados de la cadena. Si la conexión se realiza correctamente, verá una línea como Verification: OK
o Verify return code: 0 (ok)
.
Solución de problemas de la conexión de puerta de enlace
Si la conexión de su dispositivo descendente con su dispositivo de puerta de enlace es inestable, considere estas preguntas para ayudar a resolver el problema.
- ¿El nombre de host de la puerta de enlace en la cadena de conexión es el mismo que el valor de hostname en el archivo de configuración de IoT Edge del dispositivo de puerta de enlace?
- ¿Se puede resolver el nombre de host de la puerta de enlace en una dirección IP? Corrija las conexiones intermitentes mediante DNS o agregando una entrada en el archivo de hosts del dispositivo receptor.
- ¿Están abiertos los puertos de comunicación en el firewall? Asegúrese de que los puertos de protocolo necesarios (MQTTS:8883, AMQPS:5671, HTTPS:433) están abiertos entre el dispositivo de bajada y el dispositivo IoT Edge transparente.
Pasos siguientes
Obtenga información sobre cómo IoT Edge amplía las funcionalidades sin conexión a los dispositivos descendentes.