Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mqtt客户端无法验证叶子签名_Node.js_Ssl_Mqtt_Mosca - Fatal编程技术网

Node.js Mqtt客户端无法验证叶子签名

Node.js Mqtt客户端无法验证叶子签名,node.js,ssl,mqtt,mosca,Node.js,Ssl,Mqtt,Mosca,我在后端运行一个mosca代理,并且使用标准的mqttnpm库。我遇到了一个问题,在设置SSL时,我似乎无法理解发生了什么。 已生成自签名ca、服务器和客户端证书,并已像这样设置mosca var mosca = require('mosca'); var path = require('path'); var setup = { port: 8883, secure: { keyPath: path.join(__dirname, 'server.key'), cert

我在后端运行一个
mosca
代理,并且使用标准的
mqtt
npm库。我遇到了一个问题,在设置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 broker报告没有问题,并且使用这些证书运行顺利。但是,当使用
mqtt
客户机库连接到此代理时,我得到以下信息

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\u TLS\u REJECT\u UNAUTHORIZED=“0”
,但没有效果

客户机证书已经在不同的客户机上进行了测试,工作正常,没有问题。我做错了什么

nodejs版本:0.12.7 npm mosca版本:0.32.1,
npm mqtt版本:1.4.3通过实现两个接口解决了这个问题,一个用于本地主机连接(无ssl),一个用于传入连接(使用ssl)。嘿,我无法使用tls连接到mqtt服务器。我总是会犯错误。这个代码有效吗?这方面的例子不多!