Можно ли использовать аутентификацию на основе сертификатов для плагина rabbitmq-management? - PullRequest
0 голосов
/ 03 сентября 2018

Мы используем rabbitmq-management REST API для различных операций над объектами rabbitmq (очередями / обменами). Стандартная аутентификация по логину / паролю работает нормально, но по некоторым причинам мы хотели бы использовать аутентификацию без пароля (на основе ssl-сертификатов). Согласно документации (https://www.rabbitmq.com/management.html) похоже, что такая возможность есть.

Но если мы попытаемся настроить плагин:

advanced.config

{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 Установлено соединение (найдено SSLv3-совместимое рукопожатие ClientHello)
  2. | HostName | HTTP / 1.1 401 Несанкционированный

Можно ли использовать аутентификацию на основе сертификатов для плагина rabbitmq-management? Если да, может кто-нибудь дать какие-либо образцы или ссылку на документацию, что мы должны сделать?

1 Ответ

0 голосов
/ 04 сентября 2018

Я недавно ответил на этот вопрос в списке рассылки rabbitmq-users: ссылка .

Краткий ответ: вы можете настроить сервер так, чтобы он требовал сертификат клиента и подтвердить, что он был подписан доверенным корневым сертификатом, но вам все равно придется указать имя пользователя и пароль - пользователь не будет извлечен из сертификат.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы о StackOverflow.

...