Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Tecnología de Internet de las cosas

Autenticación segura de dispositivos con certificados X.509 en Eclipse Hono

En los últimos meses, la cobertura mediática ha destacado dispositivos IoT inseguros que no cumplen estándares básicos de seguridad. Una preocupación recurrente es la confidencialidad de los datos transmitidos de dispositivos a servicios en la nube. Sorprendentemente, muchos dispositivos envían datos sobre redes públicas sin cifrar, aunque protocolos basados en TCP/IP como HTTP y MQTT soporten cifrado TLS.

Eclipse Hono ha habilitado TLS para sus adaptadores HTTP y MQTT desde el principio. El hito 0.9‑M2 ahora añade soporte para autenticación con certificado de cliente X.509 durante el handshake TLS, permitiendo a los dispositivos usar un par de claves en lugar de usuario/contraseña.

Llamada a todos los desarrolladores

El mayor hackathon IoT de Europa regresa a Berlín el 14‑15 de mayo de 2023. Únase a 700+ desarrolladores en retos específicos de dominio, aprenda, conecte y diviértase.

En esta guía recorremos un ejemplo completo: crear y registrar un ancla de confianza específica de tenant, generar un certificado de dispositivo, registrar su DN de sujeto y usar el certificado para autenticar el dispositivo contra el adaptador MQTT de Hono. Se asume conocimiento práctico de criptografía RSA y conceptos X.509 (RFC 5280).

¿Por qué certificados de cliente?

Usar contraseñas requiere almacenar un secreto por dispositivo en el servicio de Credenciales de Hono, que luego se compara con la contraseña suministrada por el dispositivo. Los certificados de cliente eliminan la necesidad de secretos por dispositivo. Al registrar una única ancla de confianza para un tenant, todos los certificados de dispositivo pueden validarse en el handshake TLS usando la clave pública del tenant.

Crear una autoridad de certificación de tenant

Genere el par de claves RSA del tenant y un certificado autofirmado. Estos firmarán todos los certificados de dispositivo.

$ openssl genrsa -out tenant-key.pem 4096
$ openssl req -x509 -key tenant-key.pem -out tenant-cert.pem -days 365 -subj "/O=ACME Inc./CN=Sensors"

Use solo atributos X.500 estándar (CN, L, ST, O, OU, C, STREET, DC, UID) para mantener el DN simple.

Registrar el tenant

Registre el ancla de confianza con Hono. El siguiente ejemplo usa Hono Sandbox (v0.9‑M2 o posterior). Reemplace ACME con un ID de tenant único para su instancia.

$ TENANT="ACME"
$ SUBJECT=$(openssl x509 -in tenant-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//)
$ PK=$(openssl x509 -in tenant-cert.pem -noout -pubkey | sed /^---/d | sed -z 's/\\n//g')
$ cat < tenant.json
{ "tenant-id": "$TENANT", "trusted-ca": { "subject-dn": "$SUBJECT", "public-key": "$PK" } }
EOS
$ curl -i -H "Content-Type: application/json" -H "Expect:" --data-binary @tenant.json https://hono.eclipse.org:28443/tenant

Crear un certificado de dispositivo

Genere un par de claves de dispositivo y un certificado firmado por la CA del tenant.

$ openssl genrsa -out device-key.pem 4096
$ openssl req -new -key device-key.pem -subj "\/O=ACME Inc.\/CN=Hot Fuzz Device" | \
openssl x509 -req -days 365 -out device-cert.pem -CA tenant-cert.pem -CAkey tenant-key.pem -CAcreateserial

Registrar el dispositivo

Registre un ID de dispositivo con el tenant.

$ curl -i -H "Content-Type: application/json" --data-binary '{"device-id":"hot-fuzz"}' https://hono.eclipse.org:28443/registration/$TENANT

Registrar el DN de sujeto del dispositivo

Asocie el DN de sujeto del certificado del dispositivo con el ID de dispositivo.

$ SUBJECT=$(openssl x509 -in device-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//)
$ cat < credentials.json
{ "device-id": "hot-fuzz", "type": "x509-cert", "auth-id": "$SUBJECT", "secrets": [{}] }
EOS
$ curl -i -H "Content-Type: application/json" --data-binary @credentials.json https://hono.eclipse.org:28443/credentials/$TENANT

Probar la conexión

Inicie un consumidor para el tenant y publique telemetría usando el certificado del dispositivo.

# Iniciar consumidor
java -jar hono-cli-*-exec.jar \
 --hono.client.host=hono.eclipse.org \
 --hono.client.port=15671 \
 --hono.client.tlsEnabled=true \
 --hono.client.username=consumer@HONO \
 --hono.client.password=verysecret \
 --spring.profiles.active=receiver \
 --tenant.id=$TENANT
# Publicar telemetría vía MQTT
mosquitto_pub -h hono.eclipse.org -p 8883 \
 --capath /etc/ssl/certs/ \
 --cert device-cert.pem \
 --key device-key.pem \
 -q 1 -t telemetry -m "Hello there"

Si tiene éxito, la consola del consumidor mostrará el mensaje. También puede publicar vía HTTP:

curl -i --cert device-cert.pem --key device-key.pem \
 -H "Content-Type: plain/text" -H "Expect:" \
 --data-binary "Hello there" https://hono.eclipse.org:8443/telemetry

Tecnología de Internet de las cosas

  1. Sistema de control de temperatura basado en LM35 con microcontrolador AT89S52
  2. Teoría de Dispositivos de Estado Sólido: De la Física a Aplicaciones Prácticas
  3. Eclipse Hono lanza registro de dispositivos basado en MongoDB – Escalable, listo para producción
  4. Eclipse Hono 1.0.0 se lanza: Plataforma unificada open-source de conectividad IoT
  5. Soluciones fiables de encendido para dispositivos médicos operados por batería
  6. Avances en tecnología de dispositivos médicos: sensores, conectividad y seguridad
  7. Arm mejora conectividad y gestión de dispositivos IoT mediante la adquisición de Stream Technologies
  8. Vulnerabilidades en dispositivos IoT exponen hogares inteligentes al ataque: la amenaza de compromiso de credenciales
  9. Dispositivos IoT sin configurar: la amenaza oculta para tu hogar inteligente
  10. Hacking de Hardware Embebido para Dispositivos IoT: Herramientas, Técnicas e Implicaciones de Negocio
  11. Aproveche el IoT para Conectar y Gestionar Dispositivos Médicos de Forma Remota: Desbloquee Nuevos Modelos de Negocio Hoy