是否可以将HTTPS通信包装到MQTT中?

时间:2019-03-05 13:59:40

标签: https proxy mqtt vpn gateway

再次

我在缺乏协议知识方面苦苦挣扎。

基本情况:

设备A希望通过HTTPS与设备Z进行通信。

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

问题:

是否有可能将A和Z之间的完整HTTPS流量包装到MQTT有效载荷中,并使用那些MQTT包进行握手和数据传输-从而不会在设备A和Z中“干扰”设备他们的HTTPS通信?

这并不是以某种方式解密程序包:所有内容都应按原样包装到MQTT中,并通过G进行路由-这样就类似于OSI层8。

评估:

我的直觉是,它应该以某种方式起作用,但是我认为,要实现这一目标,我必须在设备A和网关G上编写自己的“网络驱动程序”或“网络挂钩”。

您对可行性有何看法?

感谢和问候

2 个答案:

答案 0 :(得分:1)

虽然这是可能的(如果您尽力而为,几乎一切皆有可能,但是人们已经编写了可以通过DNS查找运行的完整VPN),我会质疑投资回报率。

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

答案 1 :(得分:0)

如果您担心安全性,并且由于某种原因您不能(或不需要)在本地网络中使用基于TLS的MQTT,则可以在本地网络的边缘使用反向代理进行TLS终止。使用Nginx可以轻松做到这一点(在下面的文章中详细介绍)

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

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