Skip to content

Commit 7b92385

Browse files
Merge pull request #15811 from rabbitmq/mergify/bp/v4.2.x/pr-15810
Allow tagged (e.g. `encrypted:...`) values for more `rabbitmq.conf` keys (backport #15808) (backport #15810)
2 parents 6730797 + 17dc487 commit 7b92385

19 files changed

Lines changed: 126 additions & 21 deletions

File tree

deps/rabbit/priv/schema/rabbit.schema

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2004,7 +2004,7 @@ end}.
20042004
[{datatype, {enum, [true, false]}}]}.
20052005

20062006
{mapping, "log.syslog.ssl_options.password", "syslog.protocol",
2007-
[{datatype, string}]}.
2007+
[{datatype, [tagged_binary, binary]}]}.
20082008

20092009
{mapping, "log.syslog.ssl_options.psk_identity", "syslog.protocol",
20102010
[{datatype, string}]}.
@@ -2999,7 +2999,7 @@ end}.
29992999
[{datatype, {enum, [true, false]}}]}.
30003000

30013001
{mapping, "amqp10_client.ssl_options.password", "amqp10_client.ssl_options.password",
3002-
[{datatype, string}]}.
3002+
[{datatype, [tagged_binary, binary]}]}.
30033003

30043004
{mapping, "amqp10_client.ssl_options.psk_identity", "amqp10_client.ssl_options.psk_identity",
30053005
[{datatype, string}]}.
@@ -3107,7 +3107,7 @@ end}.
31073107
[{datatype, {enum, [true, false]}}]}.
31083108

31093109
{mapping, "amqp_client.ssl_options.password", "amqp_client.ssl_options.password",
3110-
[{datatype, string}]}.
3110+
[{datatype, [tagged_binary, binary]}]}.
31113111

31123112
{mapping, "amqp_client.ssl_options.psk_identity", "amqp_client.ssl_options.psk_identity",
31133113
[{datatype, string}]}.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDhDCCAmygAwIBAgIUfEM6fv9A+IzNCfjV/aJtTyh16BgwDQYJKoZIhvcNAQEL
3+
BQAwSzE6MDgGA1UEAwwxVExTR2VuU2VsZlNpZ25lZFJvb3RDQSAyMDI1LTEyLTA0
4+
VDE1OjA1OjIwLjEyMjA2ODENMAsGA1UEBwwEJCQkJDAeFw0yNTEyMDQyMzA1MjBa
5+
Fw0zNTEyMDIyMzA1MjBaMEsxOjA4BgNVBAMMMVRMU0dlblNlbGZTaWduZWRSb290
6+
Q0EgMjAyNS0xMi0wNFQxNTowNToyMC4xMjIwNjgxDTALBgNVBAcMBCQkJCQwggEi
7+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGxxlb5vnDOG6pw8n3QGHLZ2LN
8+
Ewo6PUO3LqvCb0JBfGYUSBEC/ICt8xJrYgobnuH+/3j5IkzJKxxN2vpNtQoD1/vO
9+
VjfmFvQCrfEO2p3IBcEiC7T/bKtK0iT42u3cqRdj+DRREpI+hVT/JhUcL8axj3Le
10+
XlOPTqwxuGMtlgdtRZynVuQ8n1oZQga05g3RCum68qNzwxMz4V0tfvQfBnMSeGk+
11+
Qs+pxRICz/Nn741FA6QUfw8QIDhnQTfg1Smp9YH88tRe++R7DV3Zu79HA2Vmc8LY
12+
x929lBbh6tk6TyexQ2NX5fVX1yRMYnX7c5eDtyJ46rFNr0iL8+lleHm4EdT7AgMB
13+
AAGjYDBeMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTG
14+
XQWR1ynJd3W5OdXJbx6YkELzGzAfBgNVHSMEGDAWgBTGXQWR1ynJd3W5OdXJbx6Y
15+
kELzGzANBgkqhkiG9w0BAQsFAAOCAQEALk5UCQc5k0HKyc1R33fcePDMuD9RsM2/
16+
1BWG8GMhA4kAOBnChmAtEyoAFsmWj3CyoP2Jx7+/JpKl9280qpwYcYIgeYLztTD3
17+
H5Jtdg46nuN+iP1dDZyM2RImwjpSlN2n8WMdZpjXlfV3e1BQT5zFPX8/WVti55LU
18+
zQNfyPKbljV4tWJuD49m0SwpdvInFvRaLIv+Ni4QLLvX8nV9UAfDzyKwCWRdUOIX
19+
M3i9k6/nTucawYwM8Kism79dGL3LPJ0IzwATqYtZ5tIPBUvqShwtICjX4h90LWkq
20+
CkuhiC1niGBR5zp4U57MTV78527JT66YhskQ/K+tyIKR2woo9IVPiw==
21+
-----END CERTIFICATE-----
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDwTCCAqmgAwIBAgIBATANBgkqhkiG9w0BAQsFADBLMTowOAYDVQQDDDFUTFNH
3+
ZW5TZWxmU2lnbmVkUm9vdENBIDIwMjUtMTItMDRUMTU6MDU6MjAuMTIyMDY4MQ0w
4+
CwYDVQQHDAQkJCQkMB4XDTI1MTIwNDIzMDUyMFoXDTM1MTIwMjIzMDUyMFowJTES
5+
MBAGA1UEAwwJbG9jYWxob3N0MQ8wDQYDVQQKDAZzZXJ2ZXIwggEiMA0GCSqGSIb3
6+
DQEBAQUAA4IBDwAwggEKAoIBAQClzAFmpTOQFJy+R1mybjlE6K3O7YPpL7W1kFYN
7+
4fXOt6QgDGXsJ+eHQBcNd2O4t+24syiEc+HQgM83XYNLatRmedYLWHL+AmMDRndF
8+
rNRKag6W0+xlAuy95q4wwWLcU5KkrHZu2DKvfzmTAcuNC+VgDDdk1W1CipjZInQn
9+
0VmHuTeUmePLw13kXoiV+k9MjWi9zU8GBOHn19RN13+Np5wA3oTaJ4K+2/f/mru2
10+
bTCbDEAiHmXZ6M4BW3dg3NyERT1mhLNkijPpGRmgULggXwG240vJ1YV6QH3voTxb
11+
Q2uGoJBOZ2pjjCv7ORsuyyt+TwYJnrs0qcSwWh2bWvEd/cv1AgMBAAGjgdUwgdIw
12+
CQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwMAYD
13+
VR0RBCkwJ4IJbG9jYWxob3N0gg9TRUEtM0xHNUhWSlVXSkuCCWxvY2FsaG9zdDAd
14+
BgNVHQ4EFgQU2zObX89sXUACpKmBqwI7Ri1Qx/kwHwYDVR0jBBgwFoAUxl0Fkdcp
15+
yXd1uTnVyW8emJBC8xswMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL2NybC1zZXJ2
16+
ZXI6ODAwMC9iYXNpYy5jcmwwDQYJKoZIhvcNAQELBQADggEBAA38RwebMkjnebaG
17+
kHMqH3Skayr/gmD9futx9zGDBx2h848j8y5+RuQj0e4v1U6MM07qniqj5oaNbHHM
18+
7rbv96NPoYrP7aiDJRtr28yCKZ4NWwoEOJnRq/FlUcx3ybthhYK8VXisJj/BYr1l
19+
I2jWi86/mUFmfC+f38eeot0t7nPJ+BG4gpQ76mb2t14QHBzr0n4edpHteqX3zrAk
20+
8nBExGDBfjauYYRKKmxVogRck+KXZsI/9xbseZ1WmbDpBmQgkpt9hrlgqkvA83pT
21+
mwP8vA/OYnN2RNfQ4pLnuMs7musauU7ef/ZRD0CB9kRLyvnFJ8udCipO/Q3AKn2R
22+
Oc6FM20=
23+
-----END CERTIFICATE-----
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQClzAFmpTOQFJy+
3+
R1mybjlE6K3O7YPpL7W1kFYN4fXOt6QgDGXsJ+eHQBcNd2O4t+24syiEc+HQgM83
4+
XYNLatRmedYLWHL+AmMDRndFrNRKag6W0+xlAuy95q4wwWLcU5KkrHZu2DKvfzmT
5+
AcuNC+VgDDdk1W1CipjZInQn0VmHuTeUmePLw13kXoiV+k9MjWi9zU8GBOHn19RN
6+
13+Np5wA3oTaJ4K+2/f/mru2bTCbDEAiHmXZ6M4BW3dg3NyERT1mhLNkijPpGRmg
7+
ULggXwG240vJ1YV6QH3voTxbQ2uGoJBOZ2pjjCv7ORsuyyt+TwYJnrs0qcSwWh2b
8+
WvEd/cv1AgMBAAECggEAAisLsYBoDxuvnKFCc2ul8W820BbU/fUPqIOlA+A/MyF0
9+
cq5qQPGGyowbQ1rIqJlrcRoS+BsG2A+lc8kmPZOiUTl3KG7AyMnxs5oVskkY6y4P
10+
8tnHICichpg5bSTeRf1n8A+2mA/ZFPrNnzGQNX2qFaE2smBo2NWrhGRDIYgHJnNh
11+
wnkPDA3Mn0qqZKxY7tyIhJw/y4s1spcvZCiK7qV3x4PxRPPFx+8owjXYa5pedvY/
12+
qcGfT2Jma9YNYEgnSMnkuU+bLn6iQrQCfFTDJn9UBMwvZSu6bK+1F+JdhC/XBBIy
13+
ZuFfTp2HJYEKOk1IT149T5ONx39GsRi8DLzDv1Dq4QKBgQDYAUBNWXpyC6dwCYz7
14+
fQKiogPD61fTOJSuKARUJyCJ/W0qK1Zb0RXySa7831lGljeAOw8M85lwT2ap81QB
15+
8Wah8i/R61X5lVaZERVFJbT+DCoPEjL54Qqn+NbQzJDGTkVvG7k5WYpHBT95zrjI
16+
T6IxiyPrNe34a+L7u35StW19VQKBgQDEft5H7aRjshivUyn9wOpn43c8ajRZ/FS5
17+
gkhntthGqj7R+M7y5H0n1XeTGG3LC/1TSkh51GvHlEO0Hp1Tx4xinkaLkODKtsNw
18+
GokbZxQn9urkeNPbN8sasSFfaY1Xw9nn1ZsHeDbmbyPRLCiFqLPGWZZpOcOwa1cY
19+
Y2k3iL4UIQKBgQDAN9zQ+F9OPbCyss0SvxwpPaO8JSHyhNdKY7H2cRszsKIEdKxU
20+
6KtvAMMHpHn9po+dPPEXxW810nK5qh+H2xpJ4wtK8vF/OLXnYJxc/EEkEg8bekaC
21+
txCUiYwgIupyjhSb2z/pGRVEPhdOffdRygu7quY72bH674b+HMs9LtZQQQKBgEHG
22+
fj3xrN+6lEzMN/g7hbv1BsrweknND8dxdy9Qo6E0CAddlFj2Z3bYHEjfGpGnl8sz
23+
yIMPumx6kxdOUDflSncQqGi7vKPe/hkeqNrFbJfcLdEBKVnumUx8EsHPoYLJir3y
24+
YQzlDuugNIsmjwH+8P7qqlDbB0idBfCiBmySl55BAoGBAL+WzTUS6JaRszpTHh2M
25+
MQpRYNGBxvJTafPBwy+uOxKUZph5aGt8yuniC4530QdxrAovi++ek8+NJeMOSTCo
26+
Mc+xkBuxCy505l8gKrnj97jtLxbzOiFp2ArFRqMm/9x70ZkO5HIX16AAgUABuP56
27+
IXyt2dPxMIunzSDmAdcLGhFd
28+
-----END PRIVATE KEY-----

deps/rabbit/test/config_schema_SUITE_data/rabbit.snippets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,7 +1399,7 @@ credential_validator.regexp = ^abc\\d+",
13991399
[{cacertfile,"test/config_schema_SUITE_data/certs/ca_certificate.pem"},
14001400
{certfile,"test/config_schema_SUITE_data/certs/server_certificate.pem"},
14011401
{keyfile,"test/config_schema_SUITE_data/certs/server_key.pem"},
1402-
{password,"t0p$3kRe7"}]}]}],
1402+
{password,<<"t0p$3kRe7">>}]}]}],
14031403
[]},
14041404
{amqp_client_ssl_options_tls_versions,
14051405
"amqp_client.ssl_options.cacertfile = test/config_schema_SUITE_data/certs/ca_certificate.pem
@@ -1504,7 +1504,7 @@ credential_validator.regexp = ^abc\\d+",
15041504
[{cacertfile,"test/config_schema_SUITE_data/certs/ca_certificate.pem"},
15051505
{certfile,"test/config_schema_SUITE_data/certs/server_certificate.pem"},
15061506
{keyfile,"test/config_schema_SUITE_data/certs/server_key.pem"},
1507-
{password,"t0p$3kRe7"}]}]}],
1507+
{password,<<"t0p$3kRe7">>}]}]}],
15081508
[]},
15091509
{amqp10_client_ssl_options_tls_versions,
15101510
"amqp10_client.ssl_options.cacertfile = test/config_schema_SUITE_data/certs/ca_certificate.pem

deps/rabbit/test/unit_config_value_encryption_SUITE.erl

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ groups() ->
3030
decrypt_start_app_undefined,
3131
decrypt_start_app_wrong_passphrase,
3232
decrypt_config,
33+
decrypt_config_map,
3334
rabbitmqctl_encode
3435
]}
3536
].
@@ -105,6 +106,33 @@ do_decrypt_config(Algo = {C, H, I, P}) ->
105106
ok = application:unload(rabbit),
106107
ok.
107108

109+
decrypt_config_map(_Config) ->
110+
Hashes = rabbit_pbe:supported_hashes() -- ?SKIPPED_HASHES,
111+
Ciphers = rabbit_pbe:supported_ciphers() -- ?SKIPPED_CIPHERS,
112+
Iterations = [1, 100, 1000],
113+
_ = [begin
114+
PassPhrase = crypto:strong_rand_bytes(16),
115+
do_decrypt_config_map({C, H, I, PassPhrase})
116+
end || H <- Hashes, C <- Ciphers, I <- Iterations],
117+
ok.
118+
119+
%% Verifies that encrypted values nested inside maps are decrypted,
120+
%% as required by e.g. rabbitmq_management.oauth_resource_servers.
121+
do_decrypt_config_map({C, H, I, P} = Algo) ->
122+
case application:load(rabbit) of
123+
ok -> ok;
124+
{error, {already_loaded, rabbit}} -> ok
125+
end,
126+
Secret = <<"test_oauth_secret">>,
127+
{encrypted, EncSecret} = rabbit_pbe:encrypt_term(C, H, I, P, Secret),
128+
application:set_env(rabbit, test_map_decrypt,
129+
#{<<"server">> => [{oauth_client_secret, {encrypted, EncSecret}}]}),
130+
rabbit_prelaunch_conf:decrypt_config([rabbit], Algo),
131+
{ok, Decrypted} = application:get_env(rabbit, test_map_decrypt),
132+
Secret = proplists:get_value(oauth_client_secret, maps:get(<<"server">>, Decrypted)),
133+
application:unset_env(rabbit, test_map_decrypt),
134+
ok.
135+
108136
encrypt_value(Key, {C, H, I, P}) ->
109137
{ok, Value} = application:get_env(rabbit, Key),
110138
{encrypted, EncValue} = rabbit_pbe:encrypt_term(C, H, I, P, Value),

deps/rabbitmq_auth_backend_ldap/priv/schema/rabbitmq_auth_backend_ldap.schema

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ end}.
290290
[{datatype, {enum, [true, false]}}]}.
291291

292292
{mapping, "auth_ldap.ssl_options.password", "rabbitmq_auth_backend_ldap.ssl_options.password",
293-
[{datatype, string}]}.
293+
[{datatype, [tagged_binary, binary]}]}.
294294

295295
{mapping, "auth_ldap.ssl_options.psk_identity", "rabbitmq_auth_backend_ldap.ssl_options.psk_identity",
296296
[{datatype, string}]}.

deps/rabbitmq_auth_backend_ldap/test/config_schema_SUITE_data/rabbitmq_auth_backend_ldap.snippets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@
199199
[{cacertfile,"test/config_schema_SUITE_data/certs/cacert.pem"},
200200
{certfile,"test/config_schema_SUITE_data/certs/cert.pem"},
201201
{keyfile,"test/config_schema_SUITE_data/certs/key.pem"},
202-
{password,"t0p$3kRe7"}]}]}],
202+
{password,<<"t0p$3kRe7">>}]}]}],
203203
[]},
204204
{ssl_options_tls_versions,
205205
"auth_ldap.use_ssl = true

deps/rabbitmq_management/priv/schema/rabbitmq_management.schema

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ end}.
466466
{mapping, "management.oauth_client_id", "rabbitmq_management.oauth_client_id",
467467
[{datatype, string}]}.
468468
{mapping, "management.oauth_client_secret", "rabbitmq_management.oauth_client_secret",
469-
[{datatype, string}]}.
469+
[{datatype, [tagged_binary, binary]}]}.
470470

471471
%% Configure OAuth2 authorization flow (defaults to code)
472472
{mapping, "management.oauth_response_type", "rabbitmq_management.oauth_response_type",
@@ -544,7 +544,7 @@ end}.
544544
{mapping,
545545
"management.oauth_resource_servers.$name.oauth_client_secret",
546546
"rabbitmq_management.oauth_resource_servers",
547-
[{datatype, string}]
547+
[{datatype, [tagged_binary, binary]}]
548548
}.
549549

550550
{mapping,

deps/rabbitmq_management/test/config_schema_SUITE_data/rabbitmq_management.snippets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,7 @@
674674
{oauth_enabled, true},
675675
{oauth_provider_url, "http://localhost:8080"},
676676
{oauth_client_id, "rabbitmq_client_code"},
677-
{oauth_client_secret, "rabbitmq_client_secret"},
677+
{oauth_client_secret, <<"rabbitmq_client_secret">>},
678678
{oauth_scopes, "openid profile rabbitmq.*"},
679679
{oauth_initiated_logon_type, idp_initiated},
680680
{oauth_token_endpoint_params, [

0 commit comments

Comments
 (0)