Rabbitmq-server: SSL ciphers not used by RabbitMQ although they are available in Erlang

Created on 30 Jun 2016  路  8Comments  路  Source: rabbitmq/rabbitmq-server

Most helpful comment

It may be time to expand our Troubleshooting TLS guide with some of @lukebakken's recent findings.

All 8 comments

RabbitMQ does not pick any cipher suites by default and I doubt it should do that. You can either specify those you want or rely on Erlang/OTP itself to use a reasonable default.

@dumbbell if you feel there's something that we can do please file a more specific issue. This is not an actionable item => closed.

As mentioned in the thread I did specify explicit ciphers in the rabbitmq.conf and they are aavialble in Erlang but are not being picked up by RabbitMQ. According to the SSL article on the RabbitMQ website this should be working so it is indeed a bug.

@firewave RabbitMQ passes the list of ciphers as is to Erlang/OTP. It does not filter them in any way. The thread above provides no evidence that this is a RabbitMQ issue or that RabbitMQ can somehow work around it.

Again, I'll let @dumbbell re-open if there are specific suggestions.

We had to dig into this some more since because of the ROBOT attack the server with this issue have no more ciphers left to use.

It turned out, that this was caused by the server certificate lacking the "Digital Signature" extension. Here's the old certificate information:

        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication

Adding that made the server return all the ciphers.

Strangely the same OpenSSL configuration is used for the creation of Apache httpd certificates which is not behaving in this way and returns all the ciphers. So I am not sure who is actually at fault here since I don't have that much knowledge about certificates in general.

Update: The initial issue was confirmed with Erlang 20.2 and RabbitMQ 3.6.15.

@firewave - this is due to the x509 implementation in Erlang itself. I modified the test CA that the RabbitMQ team uses with the same change you made here: michaelklishin/tls-gen#8. This is the code in OTP that does the filtering.

Unfortunately, every x509 implementation has different keyUsage interpretation.

Our SSL guide does use digitalSignature in its CA configuration, but it may not be the starting point for everyone.

It may be time to expand our Troubleshooting TLS guide with some of @lukebakken's recent findings.

The TLS guide was expanded in https://github.com/rabbitmq/rabbitmq-website/commit/01a72924ede02675d9ad06567f517aca3e123ea9. Troubleshooting TLS is soon to follow.

Was this page helpful?
0 / 5 - 0 ratings