如何将Reactjs Web App连接到安全的MQTT代理?

时间:2019-06-19 09:12:38

标签: reactjs mqtt

我有一个reactjs Web应用程序,需要连接到安全的mqtt代理。

该Web应用程序已部署在AWS Elastic beantalk中,并且正在使用HTTPS。我已经有一个安全的MQTT代理,但是当尝试将我的Web应用程序连接到mqtt代理时,出现此错误:

连接建立错误:net :: ERR_CERT_AUTHORITY_INVALID

我正在使用MQTTjs软件包。我已经拥有服务器端和客户端的证书。

这是我的代码:

var client = mqtt.connect('wss://[ipaddress]:8884');

我也尝试了以下代码:

var mqtt = require('mqtt');
var fs = require('fs');
var path = require('path');


var CERT = fs.readFileSync(path.join(__dirname, './ca.crt'));
var KEY = fs.readFileSync(path.join(__dirname, './ca.key'));


var options = {
    rejectUnauthorized: true,
    port: 8884,
    host: ipaddress,
    protocol: 'mqtts',
    ca: CERT,
    keyPath: KEY,
    certPath: CERT
}

但是此代码的错误是:

未捕获的TypeError:fs.​​readFileSync不是函数

1 个答案:

答案 0 :(得分:0)

您无法从浏览器的磁盘中加载证书。因此,第二版代码将无法正常工作。

您需要将CA证书和客户端证书都添加到浏览器证书存储中。

然后,浏览器应使用CA证书来验证代理,然后应选择正确的客户端证书以提供给代理作为标识。