我在RabbitMQ的Trust Store中遇到了一个问题。我已经安装了插件,如github上所示,插件确实加载了,当我将证书放入白名单文件夹时,它甚至会响应(如果我丢弃一个像私钥一样的坏证书.pem,我会得到一个错误响应,证书不是证书,如果我丢弃一个好证书,我会得到这样的响应:信任存储:装载证书'cert. pem')-这很好。但是,这就是问题开始的地方。我与Java客户端建立的MQTT和AMQP连接将通过,即使在白名单文件夹中没有证书。如果我正确理解了整个插件的想法,它们应该只在白名单文件夹中存在证书的情况下通过,否则它们不应该通过。
有没有人遇到过同样的问题?
技术:RabbitMQ on docker,Java客户端使用bouncycastle库进行ssl
//编辑插件:Rabbitmq.config文件
[
{ rabbit, [
{ loopback_users, [ ] },
{ssl_handshake_timeout, 100000},
{ tcp_listeners, [ 5672 ] },
{ ssl_listeners, [ 5671 ] },
{ ssl_options, [
{ cacertfile, "/etc/tls/cacert.pem" },
{ certfile, "/etc/tls/cert.pem" },
{ keyfile, "/etc/tls/key.pem" },
{ verify, verify_peer },
{ fail_if_no_peer_cert, true },
{ reuse_sessions, false}
] },
{ default_pass, <<"guest">> },
{ default_user, <<"guest">> },
{ default_vhost, <<"/">> },
{ hipe_compile, false }
] },
{ rabbitmq_management, [ { listener, [
{ port, 15671 },
{ ssl, true },
{ ssl_opts, [
{ cacertfile, "/etc/tls/cacert.pem" },
{ certfile, "/etc/tls/cert.pem" },
{ fail_if_no_peer_cert, false },
{ keyfile, "/etc/tls/key.pem" },
{ verify, verify_peer }
] }
] } ] },
{ rabbitmq_mqtt, [
{ vhost, <<"/">> },
{ exchange, <<"amq.topic">> },
{ default_user, <<"guest">> },
{ default_pass, <<"guest">> },
{ tcp_listeners, [ 1883 ] },
{ ssl_listeners, [ 8883 ] }
] },
{rabbitmq_trust_store, [
{directory, "/etc/whitelist"},
{refresh_interval, {seconds, 30}},
{log_levels, [{connection, debug}, {channel, debug}, {federation, debug}]}
]}
].
1条答案
按热度按时间bvjxkvbb1#
根据提供的有限信息,我基本上是猜测,但您可能没有配置TLS来验证客户端的证书。您需要使用
verify_peer
RabbitMQ配置选项。我们有全面的文档,我建议你阅读-https://www.rabbitmq.com/ssl.html,https://www.rabbitmq.com/troubleshooting-ssl.html另外请注意,您列入白名单的证书是用于签署应用程序提供的客户端证书的CA证书,而不是客户端证书本身。
最后,快速获得帮助的最佳方法是提供一组文件,供人们运行RabbitMQ和一个测试应用程序来查看问题。