首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在1883端口上订阅MQTT是否安全?

在1883端口上订阅MQTT是否安全?
EN

Stack Overflow用户
提问于 2019-12-31 00:01:18
回答 1查看 1.7K关注 0票数 2

我正在开发自己的IoT技术,并使用C/C++的ESP8266。我已经建立了一个程序,允许我切换一个继电器使用谷歌助理通过gbridge.io。我已经订阅它,使用MQTT到gbridge,它告诉它什么时候切换开关。不幸的是,我对处理与网络有关的事情非常陌生,所以我这可能是用词不对。它听1883年港口(我认为是正确的词)。我使用这种方法,因为我不想打开一个端口在我的家庭路由器。通过监听端口1883,我的路由器是否暴露或网络易受攻击?这段代码来自Adafruit MQTT库示例

代码语言:javascript
运行
复制
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

/************************* WiFi Access Point *********************************/

const char* WLAN_SSID = "SSID";
const char* WLAN_PASS = "password";

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER      "mqtt.gbridge.io"
#define AIO_SERVERPORT  1883                   // use 8883 for SSL
#define AIO_USERNAME    "gbridge-username"
#define AIO_KEY         "mqqt password"

/************ Global State (you don't need to change this!) ******************/

// Create an ESP8266 WiFiClient class to connect to the MQTT server.
WiFiClient client;
// or... use WiFiFlientSecure for SSL
//WiFiClientSecure client;

// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);

/****************************** Feeds ***************************************/

// Setup a feed called 'photocell' for publishing.
// Notice MQTT paths for AIO follow the form: <username>/feeds/<feedname>
Adafruit_MQTT_Publish onoffset = Adafruit_MQTT_Publish(&mqtt,"on off set link");

// Setup a feed called 'onoff' for subscribing to changes.
Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt,"on off link");

更新2020年8月: gbridge关闭了他们的服务器

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-31 01:05:04

端口1883通常用于无安全的MQTT。这与您的路由器或网络易受攻击无关。它的意思是:

  • 您不能确定您连接到的MQTT服务器是否是您想要的
  • 中间方可以窃听您的MQTT通信。

当您在SSL上运行MQTT时,SSL将验证该连接是使用属于您试图连接的域名的证书加密的。这两个端还将加密所有通信量,以便观察方无法窃听。

通常在端口8883上运行基于SSL的MQTT。

所有这些都不会损害您的网络或危及您的路由器。它只影响MQTT客户端和代理之间的通信。

您的MQTT客户端没有监听端口1883 --它正在连接到代理上的端口1883。代理是监听端口1883的人--这就是为什么您不必在路由器上打开端口的原因。

在上面引用的代码中,您需要使用WiFIClientSecure而不是WiFiClient。您还需要为所连接的服务器提供证书或指纹。但这与你问的问题不同;如果你需要帮助,那就属于另一篇文章。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59538144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档