在 ZMQ 套接字上接收来自未经身份验证的发件人的消息

Receiving message on ZMQ socket from unauthenticated sender

我有一个 ZMQ pub/sub 架构,其中有一个 sub 和许多 pub。这些酒吧之一是外部的,因此我使用 ZMQ CURVE 加密了传入的消息。然而,其余的都是内部发布,所以我不想因为不必要的开销而加密消息。我的问题是,是否可以让子套接字允许所有消息(加密或不加密)?

通过测试,我发现一旦选项

{ zmq.CURVE_SERVER:    1,
  zmq.CURVE_SECRETKEY: server_private_key
  }

{ zmq.CURVE_SERVERKEY: server_public_key,
  zmq.CURVE_PUBLICKEY: client_public_key,
  zmq.CURVE_SECRETKEY: client_private_key
  }

分别应用于子套接字和发布套接字,不接受未经身份验证的消息。

如果问,同一个 SUB 端的 AccessPoint 是否可以在安全方面发挥变色龙的作用 - 用于某些人而不用于其他人说到点对点的安全设置,我就得回答没有。

如果问如何针对目标进行一些设置,我将从测试开始:


SUB = aCtx.Socket( zmq.SUB )

SUB.setsockopt( ... )

SUB.bind( aNonSecureLocalAccessPOINT ) # for zmq.PLAIN

SUB.bind( anotherSecuredAccessPOINT )  # for zmq.CURVE ...

这将按要求同时解决性能和安全问题