rabbitmq管理插件可以使用基于证书的身份验证吗?

i2byvkas  于 2023-10-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(138)

我们使用rabbitmq-management REST API对rabbitmq的实体(队列/交换)进行不同的操作。通过登录名/密码的标准身份验证工作正常,但由于某些原因,我们希望使用无密码身份验证(基于ssl证书)。根据文档(https://www.rabbitmq.com/management.html),看起来有这种可能性。
但是如果我们尝试配置插件:

高级配置

{rabbitmq_management,
  [{listener, [{port,     15671},
               {ssl,      true},
               {ssl_opts, [{cacertfile, "c:/Services/certs/cacert.pem"},
                           {certfile,   "c:/Services/certs/cert.pem"},
                           {keyfile,    "c:/Services/certs/key.pem"}]}
              ]}
  ]
}

我们客户的.NET应用程序

public Foo(string url, X509Certificate clientCert)
{
    var handler = new HttpClientHandler();
    handler.ClientCertificates.Add(clientCert);

    _httpClient = new HttpClient(handler);

    var result = await _httpClient.GetAsync(uri)
 }

我们得到以下(Fiddler会话):

  1. |隧道|HTTP/1.1 200连接已建立(发现SSLv 3兼容的ClientHello握手)
  2. |主机名|HTTP/1.1 401未授权
    是否可以为rabbitmq-management插件使用基于证书的身份验证?如果是,有人能给予任何样品或文件链接,我们必须做什么?
mepcadol

mepcadol1#

我最近在rabbitmq-users邮件列表中回答了这个问题:link
简单的回答是,您可以配置服务器要求客户端证书并验证它是由受信任的根证书签名的,但您仍然必须提供用户名和密码-用户不会从证书中提取。

相关问题