【问题标题】:RabbitMQ Mutual authentication using self signed certificates使用自签名证书的 RabbitMQ 相互身份验证
【发布时间】:2017-03-31 04:36:32
【问题描述】:

我虔诚地按照 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=client,CN=MyServer.com' 的用户名,而不是 'CN=MyServer.com'

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

我想知道用户名中出现意外的“O=client”部分的原因是什么。 RabbitMQ 站点中的任何地方都没有记录它。

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


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

Erlang 版本:18

操作系统:Windows 10 企业版

【问题讨论】:

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


    【解决方案1】:

    我最近一直在看这个,它可以在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2019-07-17
      • 2011-03-23
      • 1970-01-01
      • 2020-09-20
      • 2013-12-07
      相关资源
      最近更新 更多