我在缺乏协议知识方面苦苦挣扎。
基本情况:
设备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上编写自己的“网络驱动程序”或“网络挂钩”。
您对可行性有何看法?
感谢和问候
答案 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,则协议网关应该可以解决问题,但除非绝对必要,否则我不会这样做。