AMQP integration with TLS

I’m trying to enable the AMQP application integration for my chirpstack server.
I’ve got the following setup:

  • Chirpstack and RabbitMQ on a single host
  • A certificate for chirpstack.example.com on 192.168.0.1
  • RabbitMQ:
    • AMQPs on 192.168.0.1:8885 (with TLS)
    • AMQP on 192.168.0.1:8884
    • A vHost called chirp
    • A user chirpstack with password chirppass.
    • All permissions for user chirpstack set to .*

In my chirpstack.toml config, I have the following section:

# Global integration related configuration.    
[integration]     
                             
  # Enabled integrations (global).    
  enabled = [                                                                     
    "amqp",                                      
  ]                         
    
    # AMQP / RabbitMQ integration configuration.    
  [integration.amqp]      
            
    # Server URL.    
    #                               
    # See for a specification of all the possible options:    
    # https://www.rabbitmq.com/uri-spec.html    
    url="amqps://chirpstack:chirppass@chirpstack.example.com:8885/chirp"
       
    # Event routing key.                                    
    #          
    # This is the event routing-key template used when publishing device    
    # events. Messages will be published to the "amq.topic" exchange.    
    event_routing_key="application.{{application_id}}.device.{{dev_eui}}.event.{{event}}"    
                      
    # Use JSON encoding instead of Protobuf (binary).    
    json=true

When I comment out "amqp" in integration.enabled, chirpstack starts (without the AMQP integration).
When I include it, I get the following error from Chirpstack:

INFO chirpstack::integration::amqp: Initializing AMQP integration
INFO chirpstack::integration::amqp: (Re)connecting to AMQP broker
Error: Setup AMQP integration
Caused by:
    0: failed to parse: Parsing Error: ParserErrors { error: Nom(MapOpt), errors: None }
    1: Parsing Error: ParserErrors { error: Nom(MapOpt), errors: None }

…and on RabbitMQ, I get the following:

TLS server: In state start at tls_record.erl:557 generated SERVER ALERT: Fatal - Unexpected Message
 - {unsupported_record_type,65}

Now, if I try this without TLS (amqp://... and port 8884) it works. I’m just curious if there’s a way to use TLS as well.

Hopefully this will be fixed soon, see: [4.9] AMQP Integration TLS disabled · Issue #502 · chirpstack/chirpstack · GitHub.

The issue is that the AMQP client has a configuration issue, it pulls in unwanted dependencies causing the build to fail. Once this is fixed, I will update the dependency and it should be possible to use AMQP over TLS.

1 Like