【发布时间】:2020-03-25 19:41:37
【问题描述】:
我正在使用带有 SSL/TLS 的 RabbitMQ,以实现机密性、完整性和身份验证。发送的消息在发送者和代理之间使用发送者和代理证书进行加密,然后在代理和接收者之间使用代理和接收者证书进行加密。
我的配置文件如下所示:
{ssl, [{versions, ['tlsv1.2']}]},
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile, "...ca_certificate.pem"},
{certfile, "...certificate_signed.pem"},
{keyfile, "...private_key.pem"},
{password, "pass"},
{verify, verify_peer},
{fail_if_no_peer_cert, true},
{versions, ['tlsv1.2']}]}
]}
但这还不够,因为我需要接收者/消费者能够确保发送者/发布者的身份,如here 中所述。在接收方,我只能从代理证书访问证书信息。
解决方案是使用 user-id 消息属性,就像我在 documentation 中找到的那样。 在每条消息中发送的此属性将确保只有当 user-id 属性等于该用户用于登录 RabbitMQ 代理的用户名时,才能成功发布消息。由于我已经在使用 SSL 证书,因此我可能还会使用它们作为代理的用户身份验证,如 here 所述。
我的问题:
我正在使用 RabbitMQ 在模拟平台中的代理之间进行通信,并且代理是动态创建的,因此我需要在 RabbitMQ 上动态创建用户,这似乎是不可能的。
有人知道我能否以某种方式进行动态用户创建吗?或者建议另一种方法来解决我的身份验证问题?
谢谢
【问题讨论】: