【问题标题】:AMQP secure connection / encrypted URIAMQP 安全连接/加密 URI
【发布时间】:2015-01-27 13:53:37
【问题描述】:

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

【问题讨论】:

  • 你见过rabbitmq.com/ssl.html 吗?
  • 我没有,谢谢。这是否与 SSL 加密的 HTTP 基本相同,仅用于 AMQP?我是否认为我的用户名和密码在连接时会以明文形式传输?
  • 你能解决这个问题吗?如果是这样,您能否发布您的解决方案作为答案?

标签: rabbitmq amqp


【解决方案1】:

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

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

因此,为了保护您的连接,您必须在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多