AMQP安全连接/加密URI

时间:2015-01-27 13:53:38

标签: rabbitmq amqp

我想建立从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字符串中的用户名和密码是通过互联网传输的?如果是这种情况,我想知道如何使这种身份验证更安全。

1 个答案:

答案 0 :(得分:0)

默认情况下,amqp不使用加密。所以是的,当我阅读文档时,您的用户名确实会在amqp协议中以纯文本格式发送。

RabbitMQ支持official rabbitmq documentation中所述的amqp的tls加密。

因此,为了保护您的连接,您必须在Rabbitmq中启用ssl auth并告诉它在哪里可以找到有效的证书。

例如在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