Hi Luke,
We have a similar issue to the one you're referring when establishing a tls/ssl connection using the relatively new RabbitMQ version 3.7.15 with Erlang version 22.0.5.
When testing the connection using openssl with command:
openssl s_client -connect <hostname>:5671 -debug -tls1_2
and configuration:
# SSL settings
listeners.ssl.1 = 5671
num_acceptors.ssl = 8
ssl_options.cacertfile = /cacert-path.pem
ssl_options.certfile = /cert-path.pem
ssl_options.keyfile = /key-path.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = false
ssl_options.versions.1 = tlsv1.3
ssl_options.versions.2 = tlsv1.2
we receive the following error:
CONNECTED(00000124)
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1564500521
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---
8512:error:1409442F:SSL routines:ssl3_read_bytes:tlsv1 alert insufficient security:s3_pkt.c:1498:SSL alert number 71
8512:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:659:
Unfortunately the server logs at the debug level do not provide much more information:
2019-07-30 15:11:14.201 [debug] <0.372.1> User 'guest' authenticated successfully by backend rabbit_auth_backend_internal
2019-07-30 15:11:16.521 [debug] <0.387.1> Supervisor {<0.387.1>,rabbit_connection_sup} started rabbit_connection_helper_sup:start_link() at pid <0.388.1>
2019-07-30 15:11:16.521 [debug] <0.387.1> Supervisor {<0.387.1>,rabbit_connection_sup} started rabbit_reader:start_link(<0.388.1>, {acceptor,{0,0,0,0,0,0,0,0},5671}) at pid <0.389.1>
2019-07-30 15:11:19.121 [debug] <0.397.1> User 'guest' authenticated successfully by backend rabbit_auth_backend_internal
Java client would fail with a similar error:
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: insufficient_security
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:285)
at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402)
at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:716)
at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:970)
at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
at java.base/java.io.DataOutputStream.flush(DataOutputStream.java:123)
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:303)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1104)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1054)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:994)
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:462)
System configuration:
- RabbitMQ server version 3.7.15
- Erlang 22.0.5
- Operating system version: Amazon Linux 2 (CentOS 7.x)
- RabbitMQ plugins:
* rabbitmq_management
* rabbitmq_consistent_hash_exchange
* rabbitmq_shovel_management
* rabbitmq_shovel
Any suggestions on this before we open an issue?
Dne torek, 24. oktober 2017 22.12.29 UTC+1 je oseba Luke Bakken napisala: