RabbitMQ使用自签名证书进行相互身份验证

时间:2016-11-16 20:04:24

标签: .net ssl rabbitmq digital-certificate mutual-authentication

我虔诚地遵循RabbitMQ网站上的指示,在RabbitMQ服务器和.Net客户端之间建立相互身份验证(使用RabbitMQ.com上的官方RabbitMQ客户端)

https://www.rabbitmq.com/ssl.html

但是,说明书缺少一个关键点。要在RabbitMQ服务器中验证对等证书,需要将用户映射(用于模拟)到对等证书,如下所述

https://weblogs.asp.net/jeffreyabecker/Using-SSL-client-certificates-for-authentication-with-RabbitMQ

但是,在握手期间交换证书时,RabbitMQ服务器正在寻找名为' O =客户端,CN = MyServer.com' 而非&#39的用户名; CN = MyServer.com'

如果我使用所需的权限创建此用户,则一切都会按预期成功。

我想知道意外的O =客户'是什么原因。部分用户名。在RabbitMQ网站的任何地方都没有记录。

有没有人碰到过这个? 您为模拟对等/客户端创建的用户的名称是什么?

RabbitMQ服务器和客户端版本均为3.6.5

Erlang版本:18

操作系统:Windows 10企业版

1 个答案:

答案 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