【问题标题】:Is it possible to wrap HTTPS communication into MQTT?是否可以将 HTTPS 通信包装到 MQTT 中?
【发布时间】:2019-07-27 00:32:47
【问题描述】:

我再次为协议知识的缺乏而苦苦挣扎。

基本情况:

设备 A 想通过 HTTPS 与设备 Z 通信。

设备 A 未连接到 Internet,而仅连接到仅允许 MQTT 的内部网络。我们称其为“内部总线”B。 连接到 B 的还有一个 MQTT -> HTTPS 网关 G,它可以访问互联网。

问题:

是否可以将 A 和 Z 之间的完整 HTTPS 流量包装到 MQTT 有效负载中,并使用这些 MQTT 包进行握手和数据传输 - 以一种设备 A 和 Z 不受“干扰”的方式他们的 HTTPS 通信?

这并不是指以某种方式解密包:所有内容都应按原样包装到 MQTT 中并通过 G 转发 - 所以它类似于 OSI 第 8 层。

评价:

我的直觉告诉我,它应该以某种方式工作,但我认为要真正实现这一点,我必须在设备 A 和网关 G 上编写自己的“网络驱动程序”或“网络挂钩”

您如何看待可行性?

感谢和问候

【问题讨论】:

  • 我不相信这真的是 Stack Overflow 的话题。
  • @hardillb:你会把它放在哪里?

标签: https proxy mqtt vpn gateway


【解决方案1】:

虽然这是可能的(如果你足够努力,几乎一切皆有可能,人们已经编写了运行 DNS 查找的整个 VPN)我会质疑投资回报。

您需要 2 个主题,一个用于通信的每个方向,还需要一个网关上的 tun/tap 设备来写入/读取数据包。添加一个 NAT 层,它将在 IP 层而不是在 HTTP 代理级别工作。

【讨论】:

  • 为什么是IP级别而不是传输级别?最后可能没关系:这似乎真的是个坏主意
【解决方案2】:

如果您担心安全性并且由于某种原因您不能(或不需要)在本地网络中使用 MQTT over TLS,您可以在本地网络的边缘使用反向代理来终止 TLS。使用 Nginx 很容易做到这一点(在下面的文章中有详细说明)

https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-tcp/

如果出于某种原因您绝对需要使用 HTTPS,协议网关应该可以解决问题,但除非绝对必须,否则我不会这样做。

【讨论】:

    猜你喜欢
    • 2020-02-05
    • 2021-06-24
    • 2016-10-09
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多