Texto copiado
HomeBlog Certificado MQTT TLS/SSL

Secure MQTT Comunicación con TLS/SSL

por Ponlakshmi


Generating SSL Certificates

Uno de los pasos más importantes en la implementación segura de MQTT Broker está haciendo la capa de comunicación seguro entre los clientes MQTT y el servidor MQTT. Como toda otra comunicación segura, MQTT también confía en Certificado SSL/TLS para asegurar la conexión. La asociación TLS / SSL Certificado a la comunicación es tanto aplicable a el TCP y la conexión Websocket. La comunicación segura de MQTT está representada por MQTTS para TCP y wss para el Websocket.

Secure MQTT Características del brote

NuestroMQTT Broker(CrystalMQ) tiene múltiples capas de seguridad incorporadas en ella. Además del apoyo al MQTT TLS comunicación,MQTT Autenticación, Autorización de MQTT Temas a nivel de grupo y cliente y almacenamiento seguro de datos IOT a la base de datos de backend y queues were integrado en el producto. Como el marco se ha construido de una manera que los clientes pueden construir IoT Aplicaciones a su alrededor, tomamosMQTT ServerSeguridad en serio y lo han practicado como estándar del diseño.

¿Qué es MQTT TLS / Certificado SSL?

Los certificados SSL son archivos que tienen datos digitales de clave de cifrado para cifrar datos para seguridad. Por lo tanto, Puede utilizar los certificados para asegurarse de que el cifrado de datos en el túnel no pueda ser manipulado. Hay una necesidad de una clave para decodificar los datos en el otro extremo. MQTT Broker ofrece una opción para habilitar SSL/TLS modo de transferencia de datos cifrados para mejorar la seguridad en la capa de comunicación. El Broker trabaja con todos los certificados SSL/TLS estándar y también puede funcionar con certificados auto-firmados.

Autofirmado vs CA firmado

Certification Authority (CA) es una entidad que almacena todas las claves públicas y las verifica para el tercero fiestas. Hay muchos proveedores de certificados digitales autorizados, incluyendo digicert, verisign, GeoTrust, etc. Estas autoridades de certificación proporcionan el Certificado Root. Estas raíces los certificados se proporcionan utilizando un nombre de dominio único y el correspondiente detalles de negocios, incluyendo los detalles de su ubicación. Estos certificados son plazos. El tercero aplicaciones como Web Browser validan estos certificados cuando el certificado está asociado al servidor http del dominio y proporcionar aviso si el certificado no es válido o expirado. Para los certificados Self-Firmado, el Certificado Root es creado por una empresa o un desarrollador. El procedimiento crear los certificados lado servidor y lado cliente es el mismo para el certificado CA y el auto-firmado.


El certificado basado en CA se recomienda para el entorno de producción. Sin embargo en los MQTTs requeridos la comunicación es más entreMQTT clientesy el servidor. Como la mayoría de losMQTTel despliegue será principalmente comunicación privada y aislada, usted será estar usando el apretón de manos de certificado entre el cliente y el servidor, puede que no haya mucha diferencia entre los certificados. Sin embargo, si tiene la comunicación WSS basada en el navegador, debe considerar la posibilidad de registrarse para un certificado de CA.

Creación de certificado MQTT TLS/SSL

Hemos utilizado el openssl y el ambiente ubuntu para demostrar la creación de los certificados TLS. Consulte aquí para obtener los detallesde apertura en su Ubuntu.

Crear certificado de raíz

La creación de certificado de raíz es aplicable sólo para el certificado auto firmado y obtendrá esto de la CA si usted está comprando uno. El primer paso es crear el archivo de clave privado. El siguiente comando ayuda a crear el archivo de clave privado.

opensl genrsa - En la raíz. clave 2048


Si desea tener su archivo clave seguro utilizando una contraseña, puede añadir -des3 argumento al comando, por lo que que el comando prompts le permite introducir la contraseña de forma segura. Asegúrese de mantener la contraseña segura y segura.

opensl genrsa - 3-fuera. clave 2048


Hemos completado la creación del archivo clave - root.key en la carpeta actual. Nuestro próximo paso es generar certificado archivo de solicitud de firma utilizando la clave privada RSA generada anteriormente. Además de eso, contiene personal cifrado detalles del Host (ie). país, estado, organización, nombre común, dirección de correo electrónico y clave pública.

opensl req -new -x509 -key root. llave -out root.csr


La ejecución de comandos anterior dará lugar a los siguientes detalles.

Nombre del país :
Nombre del Estado o provincia:
Nombre de la localidad:
Nombre de la Organización:
Organización Nombre de la unidad:
Nombre común (por ejemplo, servidor FQDN o SU nombre):
Dirección de correo electrónico :
Una contraseña de desafío :(opcional)
Un nombre opcional de empresa :(opcional)


Ha creado con éxito el archivo CSR para el proceso de firma. Puede utilizar los dos archivos (root.key y el root.csr) para firmar y crear el certificado.

opensl x509 -req -days 365 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt

El comando anterior crea el certificado raíz basado en X509 que se considera como certificado CA Root arriba comando genera un certificado raíz root.crt que es válido durante 365 días.

Creación de MQTT Certificado de servidor

Usted tiene que crear el archivo clave servidor para comenzar con la generación de certificados laterales del servidor. El lado servidor certificado necesita que el certificado de raíz sea proporcionado como uno del parámetro para la generación.

opensl genrsa - fuera del servidor.key 2048


Cree un archivo csr Server que contenga los datos completos del servidor del host. Este es el proceso similar a la creación root.csr. Este comando también requiere detalles de la empresa. Sírvase proporcionarles datos similares a los proporcionados certificado de raíz.

opensl req -new -out server.csr - servidor de llaves. clave


El siguiente paso es crear el certificado del servidor. El certificado raíz que usted ha creado o el adquirido de la CA necesita ser proporcionado.

opensl x509 -req -in server.csr -CA root.crt -CAkeyroot.key -CAcreateserial -out server.crt

Creación de MQTT Certificado de cliente

El procedimiento seguido para el certificado del servidor se puede utilizar para crear los certificados del cliente. Por favor utilice el nombre apropiado para los archivos y los datos apropiados para los archivos CSR.


Los certificados anteriores también son válidos durante 365 días. Mismo certificado La autoridad debe utilizarse para generando ambos el certificado cliente y servidor.

Habilitación de Broker MQTT seguro - comunicación cliente

El certificado raíz, el certificado de servidor y la clave privada del servidor deben ser colocados en el lado del servidor y el certificado raíz, el certificado cliente y la clave privada cliente deben ser colocados en el lado cliente.


Podemos tener un certificado de cliente común o un certificado individual para cada cliente. Puedes emitir un certificado al cliente usando su propia raíz. llave y root.crt. MQTT Broker/MQTT Servidor verifique el nombre común y el cliente IP durante el proceso de conexión. Si ambos son iguales, sólo el broker permite al cliente conectar de otro modo rechazar la solicitud de conexión del cliente.


Siga los pasos para desplegar y ejecutarMQTT Brokeren un entorno seguro.


  • Certificado de carpeta y archivo clave DEBE estar presente en la carpeta ./Certificate/servidor.
  • CA Certificado DEBE presentar en ./Carpeta de certificación/raíz
  • Cambiar el puerto TCP a 8883, puerto Websocket a 11443 y permitir TLS en el broker.conf. Puedes usar cualquier puerto al azar para su implementación. Asegúrese de que el mismo puerto se utiliza en el servidor MQTT y el cliente.

Siga los pasos para desplegar y ejecutarClientes MQTTen un entorno seguro.


  • Asegúrate de empaquetar la root.crt, cliente. llave y cliente. crt junto con la construcción del cliente. Deberías hacerlo. esto para tu Archivos de bin de dispositivo, así como paquetes de software.
  • El código cliente necesita ser actualizado para cargar los archivos de certificados.
  • Por ejemplo,clientes python mqttde paho tiene opciones para permitir el uso de TLScliente.tls_set(ca_certs=ca_cert, cert_reqs=ssl.CERT_REQUIRED)y la ruta de referencia debe ser especificada en el código.
  • Cambiar el puerto TCP a 8883, puerto Websocket a 11443 y porvide el punto final MQTT Broker derecho. Puedes use cualquier puerto aleatorio para su implementación. Asegúrese de que el mismo puerto se utiliza en el servidor MQTT y el cliente.

El fichero de certificado SSLse puede utilizar para generar el certificado auto cantado y desplegarlo en el MQTT Broker. Al ejecutar el script, asegúrese de que la información necesaria se proporciona durante el aviso. Cristal MQ es diseñado paraMQTT de grado empresarial seguridadpara una comunicación segura sobre la premisa y lahostil MQTT Casos de servidor.


¡Configura un entorno de IoT confiable!

Diseño de comunicación segura MQTT

Comience mediante el despliegue de un Bróker MQTT seguro en el núcleo de su sistema