我虔诚地遵循RabbitMQ网站上的指示,在RabbitMQ服务器和.Net客户端之间建立相互身份验证(使用RabbitMQ.com上的官方RabbitMQ客户端)
https://www.rabbitmq.com/ssl.html
但是,说明书缺少一个关键点。要在RabbitMQ服务器中验证对等证书,需要将用户映射(用于模拟)到对等证书,如下所述
但是,在握手期间交换证书时,RabbitMQ服务器正在寻找名为' O =客户端,CN = MyServer.com' 而非&#39的用户名; CN = MyServer.com'
如果我使用所需的权限创建此用户,则一切都会按预期成功。
我想知道意外的O =客户'是什么原因。部分用户名。在RabbitMQ网站的任何地方都没有记录。
有没有人碰到过这个? 您为模拟对等/客户端创建的用户的名称是什么?
RabbitMQ服务器和客户端版本均为3.6.5
Erlang版本:18
操作系统:Windows 10企业版
答案 0 :(得分:0)
我最近一直在研究这个问题,并且可以通过提供如下所示的其他配置在docker启动时对其进行配置
[
{rabbit, [
{auth_mechanisms, ['EXTERNAL']},
{loopback_users, []},
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile, "etc/docker/certs.d/ca_certificate.pem"},
{certfile, "etc/docker/certs.d/server_certificate.pem"},
{keyfile, "etc/docker/certs.d/private_key.pem"},
{verify, verify_peer},
{password, ""},
{fail_if_no_peer_cert, false}],
{ssl_cert_login_from, common_name}}
]}
].
此处的密钥为ssl_cert_login_from
选项,仅允许您使用证书的CN
删除此选项将启用DN