#c# #.net #ssl #rabbitmq
#c# #.net #ssl #rabbitmq
Вопрос:
Я пытаюсь использовать SSL для подключения к RabbitMQ из .СЕТЕВОЕ приложение.
RabbitMQ 3.8.8, Erlang 22.2, ОС Windows
RabbitMQ.Client.Исключения.Исключение BrokerUnreachableException: "Ни одна из указанных конечных точек не была доступна" Внутреннее исключение: Исключение IOException: не найден совместимый механизм аутентификации - сервер предлагается []
расширенный.config
[
{ssl, [{versions, ["tlsv1.2", "tlsv1.1"]}]},
{rabbit, [
{auth_backends, [rabbit_auth_backend_ldap]},
{auth_mechanisms, ["PLAIN", "AMQPLAIN", "EXTERNAL"]},
{ssl_listeners, [5671]},
{ssl_options, [
{cacertfile,"C:\Program Files\RabbitMQ SSL\cacert.pem"},
{certfile,"C:\Program Files\RabbitMQ SSL\cert.pem"},
{keyfile,"C:\Program Files\RabbitMQ SSL\key.pem"},
{verify,verify_peer},
{fail_if_no_peer_cert,false}
]}
]},
{rabbitmq_auth_backend_ldap, [
{servers, ["corp.mydamain.com", "10.10.0.4", "10.10.0.6"]},
{user_dn_pattern, "cn=${username},OU=IT,OU=USR,DC=corp,DC=mydamain,DC=com"},
{dn_lookup_attribute, "userPrincipalName"},
{dn_lookup_base, "DC=corp,DC=mydamain,DC=com"},
{user_dn_pattern, "${username}@corp.mydamain.com"},
{use_ssl, false},
{port, 389},
{log, true},
{vhost_access_query, {in_group, "CN=GRP_ORG.IT,OU=ORG,OU=GRP,DC=corp,DC=mydamain,DC=com"}},
{resource_access_query, {in_group, "CN=GRP_ORG.IT,OU=ORG,OU=GRP,DC=corp,DC=mydamain,DC=com"}},
{tag_queries, [
{administrator, {constant, false}},
{management, {constant, true}}
]}
]}
].
Я пытаюсь удалить параметр auth_mechanisms. Затем я получаю сообщение об ошибке:
RabbitMQ.Client.Исключения.Исключение BrokerUnreachableException: "Ни одна из указанных конечных точек не была доступна" Внутреннее исключение: Исключение IOException: не найден совместимый механизм аутентификации - сервер предлагается [AMQPLAIN PLAIN]
Я использую .NET RabbitMQ.Client 5.2.0
Исходный код
var factory = new ConnectionFactory
{
HostName = "dtc01-betst1",
Port = AmqpTcpEndpoint.DefaultAmqpSslPort,
VirtualHost = "/",
AuthMechanisms = new AuthMechanismFactory[] { new ExternalMechanismFactory() }
};
factory.Ssl.ServerName = "dtc01-betst1.corp.mydamain.com";
factory.Ssl.CertPath = "cert.pem"; // the same file as in {certfile,"C:\Program Files\RabbitMQ SSL\cert.pem"} in advanced.config
factory.Ssl.CertPassphrase = "";
factory.Ssl.Enabled = true;
factory.Ssl.Version = SslProtocols.Tls12;
using (var con = factory.CreateConnection())
using (var channel = con.CreateModel())
{
...
}
Ответ №1:
В файле конфигурации следует использовать косые черты.
Поскольку вы пытаетесь использовать аутентификацию по сертификату X509, вы должны быть уверены, что rabbitmq-auth-mechanism-ssl
плагин включен:
rabbitmq-plugins.bat enable rabbitmq_auth_mechanism_ssl
Если это не решит вашу проблему, я настоятельно рекомендую обратиться за помощью в rabbitmq-users
список рассылки.
ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает rabbitmq-users
список рассылки и только иногда отвечает на вопросы по StackOverflow.