我在我的后端运行mosca
代理,我正在使用标准mqtt
npm lib。我遇到了一个问题,在设置SSL时我似乎无法理解这个问题。
已经生成了自签名的ca,服务器和客户端证书,并设置了像这样的mosca
var mosca = require('mosca');
var path = require('path');
var setup = {
port: 8883,
secure: {
keyPath: path.join(__dirname, 'server.key'),
certPath: path.join(__dirname, 'server.crt'),
caPaths: path.join(__dirname, 'ca.crt'),
requestCert: true,
rejectUnauthorized: false
}
}
var server = new mosca.Server(setup);
server.on('ready', function () {
console.log('rdy');
});
Mosca经纪人报告没有问题,并且使用这些证书可以顺利运行。但是,当使用mqtt
客户端lib连接到此代理时,我得到以下内容
var mqtt = require('mqtt');
var fs = require('fs');
var tls = require('tls');
var client = mqtt.connect('ssl://localhost:8883', tls.connect({
key: fs.readFileSync(path.join(__dirname, 'client.key')),
ca: fs.readFileSync(path.join(__dirname, 'ca.crt')),
cert: fs.readFileSync(path.join(__dirname, 'client.crt')),
passphrase: 'client'
}));
client.on('error', function (err) {
console.log(err)
});
尝试连接时,会触发错误事件,并显示以下错误:
[Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
我已尝试设置process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
但无效。
客户端证书已经过不同客户端的测试,并且没有任何问题。我在这做错了什么?
nodejs版本:0.12.7 npm mosca版本:0.32.1, npm mqtt版本:1.4.3