无法使用 amqps 连接到 RabbitMQ 代理

Unable to connect to RabbitMQ broker using amqps

您好,我想使用 amqps 连接到 rabbitmq 代理,但它似乎不起作用。

ConnectionFactory cf = new ConnectionFactory();
Uri uri = new Uri("amqps://localhost:5671");
cf.Uri = uri;

我已经启用了插件 "rabbitmq_auth_mechanism_ssl" 并将 rabbitmq.conf 配置为以下内容:

management.tcp.port       = 15672

management.ssl.port       = 15671
management.ssl.cacertfile = C:\CA\ca.cert.pem
management.ssl.certfile   = C:\CA\serca.cert.pem
management.ssl.keyfile    = C:\CA\private.key.pem


listeners.ssl.1 = 5671
ssl_options.cacertfile = C:\CA\ca.cert.pem
ssl_options.certfile   = C:\CA\serca.cert.pem
ssl_options.keyfile    = C:\CA\private.key.pem
ssl_options.password   = secret

ssl_options.verify     = verify_peer
ssl_options.fail_if_no_peer_cert = true

auth_mechanisms.1 = EXTERNAL
auth_mechanisms.2 = PLAIN
auth_mechanisms.3 = AMQPLAIN

我需要再次启用另一个插件才能正常工作吗?

如果有人能给我一些关于使用 amqps 连接到 RabbitMQ 代理的指导/提示,我将不胜感激。

啊,我找到了解决办法。我把答案贴在这里,希望对大家有帮助:

在 C# 中:

ConnectionFactory cf = new ConnectionFactory();

                Uri uri = new Uri("amqps://sample:sample@localhost");
                cf.Port = AmqpTcpEndpoint.DefaultAmqpSslPort;
                cf.Uri = uri;
                var sslOptions = new SslOption
                {
                    Enabled = true,
                    ServerName = "server cn",  
                    AcceptablePolicyErrors = System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors | 
                                             System.Net.Security.SslPolicyErrors.RemoteCertificateNameMismatch |
                                             System.Net.Security.SslPolicyErrors.RemoteCertificateNotAvailable,

                };
                cf.Ssl = sslOptions;

在rabbitmq.conf

management.tcp.port       = 15672

management.ssl.port       = 15671
management.ssl.cacertfile = C:\CA\ca.cert.pem
management.ssl.certfile   = C:\CA\serca.cert.pem
management.ssl.keyfile    = C:\CA\private.key.pem


listeners.ssl.1 = 5671
ssl_options.cacertfile = C:\CA\ca.cert.pem
ssl_options.certfile   = C:\CA\serca.cert.pem
ssl_options.keyfile    = C:\CA\private.key.pem
ssl_options.password   = secret

ssl_options.verify     = verify_peer
ssl_options.fail_if_no_peer_cert = false    <<<< need to set this to false.

auth_mechanisms.1 = EXTERNAL
auth_mechanisms.2 = PLAIN
auth_mechanisms.3 = AMQPLAIN

参考: https://www.squaremobius.net/amqp.node/ssl.html

http://rabbitmq.1065348.n5.nabble.com/C-client-connect-using-SSL-td31134.html