gpt4 book ai didi

.net - RabbitMQ DotNet 客户端不连接到 SSL

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:15 25 4
gpt4 key购买 nike

我们正在尝试制作一个 PoC,表明用不同语言编写的应用程序可以在一个组织中通过 RabbitMQ 代理进行通信。我们运行 vanilla RabbitMQ docker image rabbitmq:3.6.1-management 和执行 SSL 的 vanilla haproxy docker image haproxy:1.6.5:

frontend amqp_front
bind *:5672 tcp-ut 5s
mode tcp
timeout client 60s
timeout client-fin 1s
no option clitcpka
default_backend amqp_back

frontend amqp_front_ssl
bind *:5671 tcp-ut 5s ssl crt /etc/certs/haproxy/rmq.pem ca-file /etc/certs/haproxy/root.crt verify required
mode tcp
timeout client 60s
timeout client-fin 1s
no option clitcpka
acl client ssl_c_s_dn(CN) -m str cli
tcp-request content reject if !client
default_backend amqp_back

RabbitMQ 配置为:

[
{rabbit,
[
{ tcp_listeners, [ 5672 ] },
{ ssl_listeners, [ ] },
{default_pass, <<"pwd">>},
{default_user, <<"usr">>},
{default_vhost, <<"default">>},
{loopback_users, []}
]
},
{ rabbitmq_management, [
{ listener, [
{ port, 15672 },
{ ssl, false }
]
}
]
}
].

我们在 GoNode.js 中编写了一段简单的代码,它们都加载 root.crt、cli.crt 和 cli.key 并成功连接到 SSL 端口5671 并消费。

尽管尝试使用 RabbitMQ.Client.dll(版本 3.6.0、3.6.1、3.6.2)在 .Net 中编写相同的简单代码,但失败了:

X509Store store = new X509Store (StoreName.Root, StoreLocation.LocalMachine);
store.Open (OpenFlags.ReadOnly);

var factory = new ConnectionFactory ();
factory.Ssl.Enabled = true;
factory.Ssl.ServerName = "rmq";
factory.Ssl.Certs = store.Certificates;
factory.Ssl.CertPassphrase = "";
factory.HostName = "localhost";
factory.Port = 5671;
factory.UserName = "usr";
factory.Password = "pwd";
factory.VirtualHost = "default";

var conn = factory.CreateConnection ()

发生的事情是 .Net 客户端忽略端口 5671 而忽略上面的设置,它只是转到 5672。如果 5672 打开 - 连接到它,如果 5672 关闭 - 失败并拒绝连接。

Go 和 Node.js 中的代码证明我的 SSL 设置是有效的。.Net 客户端的错误显示 SSL 东西甚至没有机会跳入。

我在使用 debian jessie & Mono。

我是否遗漏了一些明显的东西?

最佳答案

这是 RabbitMQ .net 客户端 3.6.2 库在使用 SSL 时不遵守指定端口的问题。

它已被修复,将在 3.6.3 发布时可用(他们与服务器同步发布,所以不知道什么时候可以发布)。

您的选择是:-

  • 使用旧版本的 .net 客户端
  • 从最新源构建 .net 客户端
  • 尽可能使用标准端口
  • 等待3.6.3发布

关于.net - RabbitMQ DotNet 客户端不连接到 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37488107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com