AMQP安全连接/加密URI

5
我希望能够从我的Java客户端与RabbitMQ AMQP消息代理建立AMQP连接。如https://www.rabbitmq.com/api-guide.html所述,它实际上可以正常工作。

我正在进行以下操作:

ConnectionFactory factory = new ConnectionFactory();
factory.setUsername(userName);
factory.setPassword(password);
factory.setVirtualHost(virtualHost);
factory.setHost(hostName);
factory.setPort(portNumber);
Connection conn = factory.newConnection();

或者以下等效的代码也可以实现相同的功能:

ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://userName:password@hostName:portNumber/virtualHost");
Connection conn = factory.newConnection();

我想知道我的用户名和密码是否以明文形式在URI字符串中通过互联网传输?如果是这样的话,我想知道如何使身份验证更加安全。


你看过 https://www.rabbitmq.com/ssl.html 吗? - old_sound
我没有,谢谢。这个基本上和SSL加密的HTTP一样,只是针对AMQP吗? 而且当连接时,我的用户名和密码会以明文形式传输吗? - n1try
1
你能解决这个问题吗?如果可以,请把你的解决方案发布为答案。 - Ryan Gates
1个回答

0
默认情况下,amqp 不使用加密。因此,根据我阅读的文档,您的用户名确实会作为明文在 amqp 协议中发送。
RabbitMQ 支持 amqp 的 tls 加密,如官方RabbitMQ文档所述。
因此,为了保护您的连接,您必须在 Rabbitmq 中启用 ssl 认证,并告诉它在哪里找到有效的证书。
例如,在rabbitmq.conf中:
listeners.ssl.default = 5671

ssl_options.cacertfile = /path/to/ca_certificate.pem
ssl_options.certfile   = /path/to/server_certificate.pem
ssl_options.keyfile    = /path/to/server_key.pem
ssl_options.verify     = verify_peer
ssl_options.fail_if_no_peer_cert = false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接