Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

300
Visualizações
Conexión MQTT TLS

Me gustaría conectar un MQTT-Client de prueba a mi aplicación Node.js como MQTT-Broker. estoy usando la biblioteca aedes de moscajs

Mi MQTT-Client es la herramienta "MQTT-Explorer" y aquí está mi aplicación Node.js:

 const fs = require('fs'); const aedes = require('aedes')(); const options = { key: fs.readFileSync('certs/server_key.pem'), cert: fs.readFileSync('certs/server_cert.pem'), }; // const server = require('net').createServer(aedes.handle); const server = require('tls').createServer(options, aedes.handle); const PORT = 8881; server.listen(PORT, () => { console.log(`server is up and running: PORT [${PORT}] - ID [${aedes.id}]`); });

Puedo conectarme sin problemas a PORT=1881 con const server = require('net').createServer(aedes.handle) y también puedo conectarme a PORT=8881 con const server = require('tls').createServer(options, aedes.handle)

Con la Herramienta xca-2.4.0.msi 2.4.0 he creado un Archivo de CERTIFICADO ca.pem y un CERTIFICADO server_cert.pem y una CLAVE PRIVADA server_key.pem (firmada desde ca.pem) como Servidor. La clave para CA y el servidor son diferentes:

XCA

Para mi cliente MQTT, en ADVANCED, CERTIFICATES, SERVER CERTIFICAT (CA) , seleccioné el archivo ca.pem. Si selecciono "Cifrado", funciona. Pero si selecciona "validar certificado", error: el nombre de host/IP no coincide con los nombres alternativos del certificado: IP: 127.0.0.1 no está en la lista de certificados

Explorador de MQTT

Lamentablemente no se que estoy haciendo mal, gracias de antemano :(

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

MQTT Explorer está construido usando Node.js y la biblioteca MQTT MQTT.js. Según este problema :

Node.js requiere que la dirección IP esté en subjectAltNames para el certificado y no en el CN. Tal vez MQTT.fx no requiera eso, pero debería.

y:

Si el certificado de su servidor dice CN=localhost en el campo Asunto, conéctese usando localhost y no 127.0.0.1 y debería funcionar. Si dice CN=127.0.0.1, debe crear uno nuevo porque Node.js no validará la dirección IP a menos que esté en la extensión SAN. Hay una manera de evitarlo en el código (creo que es una opción llamada checkServerIdentity), pero preferiría arreglar mi certificado si tuviera este problema.

En esta respuesta se establece una justificación del enfoque adoptado en Node, que incluye la siguiente cita de RFC2818: HTTP Over TLS :

En algunos casos, el URI se especifica como una dirección IP en lugar de un nombre de host. En este caso, el IPAddress subjectAltName debe estar presente en el certificado y debe coincidir exactamente con la IP en el URI.

Como está utilizando MQTT sobre TLS (a diferencia de HTTP sobre TLS), podría argumentar que lo anterior no se aplica pero, dado que el uso principal de la biblioteca TLS es para el tráfico HTTP, tiene sentido que confirme el RFC por defecto.

Tienes algunas opciones que incluyen:

  • Utilice un nombre de host (p. ej., localhost ) en lugar de una IP al crear el certificado o conectarse.
  • Agregue la IP como un subjectAltName
  • Modifique la biblioteca para usar un noop checkServerIdentity (vea esta respuesta ).
  • Use otra aplicación para probar (realmente no se recomienda ya que algunas aplicaciones funcionarán y otras no). El problema citado anteriormente menciona que MQTT.fx funciona.
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda