我有一个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不是函数
答案 0 :(得分:0)
您无法从浏览器的磁盘中加载证书。因此,第二版代码将无法正常工作。
您需要将CA证书和客户端证书都添加到浏览器证书存储中。
然后,浏览器应使用CA证书来验证代理,然后应选择正确的客户端证书以提供给代理作为标识。