Mqtt客户端UNABLE_TO_VERIFY_LEAF_SIGNATURE

时间:2016-04-06 07:56:37

标签: node.js ssl mqtt mosca

我在我的后端运行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

0 个答案:

没有答案