Java-клиент RabbitMQ не может соединиться с TLS - PullRequest
0 голосов
/ 28 сентября 2018

Цель: Я занимаюсь исследованием аутентификации RabbitMQ без пароля.Моя цель - подключить простой Java-клиент к серверу RabbitMQ с помощью TLS

Платформа :

  • Rabbit-сервер версии 3.7.7
  • erlang версия 21.0.1

Шаги, предпринятые в соответствии с документацией:

Я имею в виду документацию по https://www.rabbitmq.com/ssl.html

1) Я сгенерировал CA, Сертификаты, закрытые ключи, как указано в (https://www.rabbitmq.com/ssl.html#manual-certificate-generation)

2). Основные настройки, связанные с TLS, выполняются в rabbitmq.config следующим образом (https://www.rabbitmq.com/ssl.html#enabling-tls):

[{
    rabbit, [
    {
        tcp_listeners, [5672]
    },{
    tcp_listeners, [{"127.0.0.1", 5672},
                     {"::1",       5672}]
    },
    {password_hashing_module, rabbit_password_hashing_sha512},

    {auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']},

    {ssl_listeners, [5671]},

    {ssl_options, [{cacertfile, "/path/to/ca_certificate_bundle.pem"},
                    {certfile,   "/path/to/server_certificate.pem"},
                    {keyfile,    "/path/to/server/private_key.pem"},
                    {password, "password"},
                    {verify,     verify_peer},
                    {fail_if_no_peer_cert, false}]}
    ]
}]. 

3) Я проверил, что TLS включен в файле журнала (https://www.rabbitmq.com/ssl.html#enabling-tls-verify-configuration)

4) Я устанавливаю простой пример java-клиента на сервер RabbitMQ по TLS без проверки сертификатов, как упоминалосьв https://www.rabbitmq.com/ssl.html#java-client-connecting

Проблема:

После запуска кода я получаю исключение тайм-аута сокета следующим образом:

Exception in thread "main" java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at sun.security.ssl.InputRecord.readFully(Unknown Source)
        at sun.security.ssl.InputRecord.read(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
        at sun.security.ssl.AppOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at java.io.DataOutputStream.flush(Unknown Source)
        at com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:147)
        at com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:153)
        at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:285)
        at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:900)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:859)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:817)
        at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:954)
        at Example1.main(Example1.java:17)

В Example1.java сбой линии при Соединении conn = factory.newConnection ();

Я искал в сетиза этим исключением, но предлагаемые решения, похоже, не связаны между собой.Можете ли вы сказать мне, где я иду не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...