我想将测试 MQTT-Client 作为 MQTT-Broker 连接到我的 Node.js 应用程序。我正在使用moscajs的 aedes 库
我的 MQTT-Client 是工具“MQTT-Explorer”,这是我的 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}]`);
});
我可以毫无问题地PORT=1881
与 withconst server = require('net').createServer(aedes.handle)
连接,我也可以与PORT=8881
withconst server = require('tls').createServer(options, aedes.handle)
使用工具xca-2.4.0.msi
XCA 2.4.0,我创建了一个 ca.pem 证书文件和一个证书 server_cert.pem 和一个 server_key.pem 私钥(从 ca.pem 签名)作为服务器。CA 和服务器的密钥不同:
对于我的 MQTT 客户端,ADVANCED, CERTIFICATES, SERVER CERTIFICAT (CA)
我选择了 ca.pem 文件。如果我选择“加密”,它可以工作。但如果选择“验证证书”,则会出现错误:主机名/IP 与证书的替代名称不匹配:IP:127.0.0.1 不在证书列表中
不幸的是,我不知道我做错了什么,在此先感谢:(