Commit 2fdb991
committed
Validate TLS certificate files contain valid PEM data at startup
RabbitMQ currently accepts invalid TLS certificate files at startup
without validation, only failing silently when clients attempt to
connect. This occurs because Erlang's TLS implementation lazily loads
certificates on first connection rather than at configuration time.
Users may not discover misconfigured certificates until production
traffic fails.
This change adds a `pem_file` validator to the cuttlefish schema that
reads certificate files and validates they contain valid PEM data using
`public_key:pem_decode/1`. The validator rejects empty files and files
without valid PEM entries, causing RabbitMQ to fail at startup with a
clear error message identifying the invalid file.
The validator applies to all TLS certificate file mappings across 6
schema files: `cacertfile`, `certfile`, and `keyfile` for main
listeners, definitions import, syslog, HTTP auth backend, LDAP auth
backend, and peer discovery (Consul, etcd, Kubernetes). DH parameter
files continue using the existing `file_accessible` validator since they
are not PEM-encoded certificates.
Valid X509 certs are now required for schema tests.
Fixes #150651 parent 6abeaf4 commit 2fdb991
File tree
107 files changed
+1319
-951
lines changed- deps
- rabbitmq_auth_backend_http
- priv/schema
- test/config_schema_SUITE_data
- certs
- rabbitmq_auth_backend_ldap
- priv/schema
- test/config_schema_SUITE_data
- certs
- rabbitmq_auth_backend_oauth2
- priv/schema
- src
- test
- config_schema_SUITE_data
- certs
- rabbit_oauth2_schema_SUITE_data/certs
- rabbitmq_management
- priv/schema
- test/config_schema_SUITE_data
- certs
- rabbitmq_mqtt/test/config_schema_SUITE_data
- certs
- rabbitmq_peer_discovery_consul/priv/schema
- rabbitmq_peer_discovery_etcd/priv/schema
- rabbitmq_peer_discovery_k8s
- priv/schema
- test/config_schema_SUITE_data
- certs
- rabbitmq_prometheus
- priv/schema
- test/config_schema_SUITE_data
- certs
- schema
- rabbitmq_stomp/test/config_schema_SUITE_data
- certs
- rabbitmq_trust_store
- priv/schema
- test/config_schema_SUITE_data
- certs
- rabbitmq_web_mqtt
- priv/schema
- test/web_mqtt_config_schema_SUITE_data
- certs
- rabbitmq_web_stomp
- priv/schema
- test/config_schema_SUITE_data
- certs
- rabbit
- priv/schema
- test/config_schema_SUITE_data
- certs
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
107 files changed
+1319
-951
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
178 | | - | |
| 178 | + | |
179 | 179 | | |
180 | 180 | | |
181 | | - | |
| 181 | + | |
182 | 182 | | |
183 | 183 | | |
184 | 184 | | |
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
217 | | - | |
| 217 | + | |
218 | 218 | | |
219 | 219 | | |
220 | 220 | | |
| |||
316 | 316 | | |
317 | 317 | | |
318 | 318 | | |
319 | | - | |
| 319 | + | |
320 | 320 | | |
321 | 321 | | |
322 | | - | |
| 322 | + | |
323 | 323 | | |
324 | 324 | | |
325 | 325 | | |
| |||
373 | 373 | | |
374 | 374 | | |
375 | 375 | | |
376 | | - | |
| 376 | + | |
377 | 377 | | |
378 | 378 | | |
379 | 379 | | |
| |||
1915 | 1915 | | |
1916 | 1916 | | |
1917 | 1917 | | |
1918 | | - | |
| 1918 | + | |
1919 | 1919 | | |
1920 | 1920 | | |
1921 | | - | |
| 1921 | + | |
1922 | 1922 | | |
1923 | 1923 | | |
1924 | 1924 | | |
| |||
1954 | 1954 | | |
1955 | 1955 | | |
1956 | 1956 | | |
1957 | | - | |
| 1957 | + | |
1958 | 1958 | | |
1959 | 1959 | | |
1960 | 1960 | | |
| |||
2889 | 2889 | | |
2890 | 2890 | | |
2891 | 2891 | | |
| 2892 | + | |
| 2893 | + | |
| 2894 | + | |
| 2895 | + | |
| 2896 | + | |
| 2897 | + | |
| 2898 | + | |
| 2899 | + | |
2892 | 2900 | | |
2893 | 2901 | | |
2894 | 2902 | | |
| |||
Lines changed: 21 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
This file was deleted.
This file was deleted.
This file was deleted.
Lines changed: 23 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
Lines changed: 28 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
0 commit comments