reactjs - 如何将我的 Reactjs Web 应用程序连接到安全的 MQTT 代理?
问题描述
我有一个需要连接到安全 mqtt 代理的 reactjs Web 应用程序。
Web 应用程序部署在 AWS 弹性 beanstalk 中并使用 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 不是函数
解决方案
您无法在浏览器中从磁盘加载证书。所以代码的第二个版本是行不通的。
您需要将 CA 和客户端证书添加到浏览器证书存储中。
然后浏览器应该使用 CA 证书来验证代理,然后应该选择正确的客户端证书作为标识呈现给代理。
推荐阅读
- azure - Anzure 搜索摄取事件
- python - 如何检查行值并用它们更新已经存在的列
- javascript - 如何匹配数字并创建二维数组?
- html - img 标签中的渐变属性
- python - 如何以特定顺序对两个(或更多)不同列上的熊猫数据框进行排序
- node.js - 立即更新 KOA 中的 cookie
- xamarin - More TabbedPage 的不同文本(语言资源来源)
- android - 在哪里可以找到浏览器下载的 android emulator.zip?
- curl - curl 到 wget 的转换
- neo4j - 在 grapheneDB 上正确配置图形数据科学插件