Message queue security
Message queuing services facilitate inter-process communication between OpenStack services. Transport Layer Security (TLS) is the industry-standard cryptographic protocol designed to secure internet communications with confidentiality, integrity, and authentication.
In RHOSO deployments, TLS is enabled by default across service communication.
Security and hardening goals in RHOSO for messaging include the following:
- Protect message traffic from tampering.
- Prevent eavesdropping on communications.
- Restrict trust chains.
These goals are achieved through the following best practices:
- Use the platform-default TLS messaging posture.
- Use
cert-managerto manage the lifecycle of your certificates. - Use Kubernetes Secret and RBAC controls.
- Enforce operator-governed trust and endpoint exposure policies.
Encryption in RHOSO is handled by OpenShift-native mechanisms and cert-manager, instead of by manual RabbitMQ configuration.
RabbitMQ exposes the following additional endpoints beyond Advanced Message Queuing Protocol (AMQP):
- 15672: HTTP management API, non-TLS.
- 15671: HTTPS management API, TLS.
- 15692: Prometheus exporter, non-TLS.
- 15691: Prometheus exporter, TLS.
When hardening your RHOSO deployment, you can restrict or disable non-TLS management and monitoring endpoints, where feasible. Use NetworkPolicies and service exposure controls to limit access to non-TLS ports (15672, 15692), and prefer TLS ports (15671, 15691) for operational tools.
RabbitMQ uses port 25672 for inter-node clustering communication. This traffic is separate from client AMQP connections.
In multi-replica deployments, verify whether inter-node encryption is explicitly enabled and enforce it where required by policy.
TLS enablement alone is not sufficient for hardening. You should define and validate protocol and cipher policy, such as the following:
- Minimum protocol version
- Enforce TLS 1.2 or higher.
- Deprecated protocols
- Disable TLS 1.0 and TLS 1.1.
- Cipher posture
- Prefer modern Authenticated Encryption with Associated Data (AEAD) cipher suites and remove deprecated or weak options.
- Verification
- Validate negotiated protocol and cipher from a trusted administration context with
openssl s_clientor equivalent tools. Apply these checks to both client messaging paths and administrative endpoints where TLS is enabled.
Messaging security best practices Copy linkLink copied!
You can secure messaging transport with some of the following best practices:
- Validate issuer and CA hierarchy
-
- Check issuer objects and verify that the internal roots are present and correct.
- Confirm that
RabbitMQcertificates are issued by the Certificate Authority (CA) that you expect.
- Enforce custom enterprise CAs when required
-
- Ensure custom trust roots are propagated consistently across control-plane components.
- Monitor certificate rotation
-
- Track certificate readiness and renewal events.
- Configure alerts on renewal failures before expiration windows.
- Restrict access to secrets and namespaces
-
- Audit who can read or mount transport URL and certificate secrets.
- Validate RBAC boundaries in the
openstacknamespace.
- Audit runtime TLS usage
-
- Confirm active
RabbitMQlisteners and verify Advanced Message Queuing Protocol (AMQP) TLS listener usage. - Verify transport URLs and consistently use 5671 and
ssl=1.
- Confirm active
- Harden management and monitoring paths
-
- Restrict the non-TLS ports (15672, 15692) by using
NetworkPoliciesand service exposure controls. - Prefer the TLS ports (15671, 15691) where operationally required.
- Restrict the non-TLS ports (15672, 15692) by using
- Address availability and clustering
-
- Verify
RabbitMQreplica count for production HA posture. - In multi-replica setups, include checks for inter-node traffic hardening.
- Verify
Messaging hardening verification Copy linkLink copied!
You can use the following checks to validate messaging hardening status:
- Confirm RabbitMQ listeners
-
$ oc exec -n openstack <rabbitmq-pod> -- rabbitmq-diagnostics listenerswhere:
-
<rabbitmq-pod> -
Specifies the name of your
RabbitMQpod.You can expect to see results such as the following:
- AMQP TLS listener on 5671 present.
- Plain AMQP 5672 absent for hardened/default posture.
- Management or monitoring listeners reviewed for TLS or non-TLS exposure.
- Verify certificate readiness and issuer mapping
-
$ oc get certificates -n openstack \ -o custom-columns='NAME:.metadata.name,ISSUER:.spec.issuerRef.name,READY:.status.conditions[0].status'You can expect to see results such as the following:
RabbitMQcertificates, for examplerabbitmq-svc,rabbitmq-cell1-svcareREADY=True.- Issuer alignment matches intended CA hierarchy, for example
rootca-internal.
- Verify issuer inventory
-
$ oc get issuers -n openstackYou can expect to see the following result:
- Issuers include
rootca-internal,rootca-libvirt,rootca-ovn, androotca-public.
- Issuers include
- Inspect transport URL format safely
-
$ oc get secret -n openstack <transport-url-secret> \ -o jsonpath='{.data.transport_url}' | base64 -d | \ sed -E 's#(://)[^:]+:[^@]+@#\1<redacted>:<redacted>@#'where:
-
<transport-url-secret> -
Specifies the appropriate transport URL secret value for your environment.
You can expect to see results such as the following:
- URL includes port 5671 and
ssl=1. - Credentials are redacted before sharing logs or tickets.
- URL includes port 5671 and
- Validate negotiated TLS protocol/cipher
-
$ openssl s_client -connect <rabbitmq-service-or-route>:5671 -tls1_2where:
-
<rabbitmq-service-or-route> -
Specifies the appropriate
RabbitMQservice or route value for your environment.You can expect to see results such as the following:
- A successful TLS handshake.
- The negotiated protocol or cipher meets policy requirements.