por Ponlakshmi
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.
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.
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.
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.
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.
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.
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
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.
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.
Siga los pasos para desplegar y ejecutarClientes MQTTen un entorno seguro.
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.