【问题标题】:MQTT is it possible for publisher to define allowed subscribers on topic?MQTT 发布者是否可以在主题上定义允许的订阅者?
【发布时间】:2020-03-12 14:39:01
【问题描述】:

我有一个基本的 MQTT 问题:如果我有一个代理,我无法自行配置,但可以匿名发布或订阅,发布者是否可以定义该主题的允许客户端?

例如使用 mosquitto,我可以定义 ACL 文件,但只能在代理站点。

如果不可能,用 python 加密已发布数据的最佳方法是什么?

【问题讨论】:

  • 您能提供更多上下文吗?通常,您可以基于 TLS/SSL 加密您的代理。这可能是一个起点:mosquitto.org/man/mosquitto-tls-7.html您是否要求在网络内建立某种白名单?
  • 好吧,我想使用现有的 mosquitto 经纪人,但要独立于 mosquitto 管理员。经纪人上有不同的其他订阅者。我当然可以加密消息的有效负载,但我想知道作为发布者我是否可以允许或拒绝订阅“我的”主题。
  • 我想我明白了。我猜端到端加密(E2E)将是最好的方式。 medium.com/@renugopal17.siva/…这家伙找到了一个有趣的解决方案,也许这可以成为你的起点。他用 C 写过,但也应该用 python 工作。
  • 好的,这就是我的想法。我已经有一个用于有效载荷端到端加密的运行 Python 代码。我希望会有一种更“通用”的方式。谢谢。

标签: python security mqtt


【解决方案1】:

不,MQTT 发布者完全不知道或控制哪些客户端可以订阅它发布消息的主题。

MQTT 是一种发布/订阅协议,其主要原则之一是完全将发布者与订阅者解耦。发布消息时,订阅者可以是 0 到 n 个订阅者。

@GDagger 在 cmets 中提到的唯一控制选项是您可以加密有效负载,以便只有授权的订阅者才能解密它。由于 MQTT 有效负载只是字节的集合,您可以发送任何您想要的内容(在 256mb 大小限制内)

另一方面,代理拥有完全控制权,它可以使用 ACL 来决定哪些客户端可以发布或订阅哪些主题。

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多