Skip to content

Commit e7cb242

Browse files
Verify non-zero DNS and email SAN
1 parent 4c10999 commit e7cb242

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

deps/rabbitmq_ct_helpers/tools/tls-certs/openssl.cnf.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,6 @@ DNS.2 = localhost
6363

6464
[ client_alt_names ]
6565
DNS.1 = rabbit_client_id
66+
DNS.2 = rabbit_client_id_ext
67+
email.1 = rabbit_client@localhost
68+
URI.1 = rabbit_client_id_uri

deps/rabbitmq_mqtt/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ rabbitmq_integration_suite(
136136
"test/rabbit_auth_backend_mqtt_mock.beam",
137137
"test/util.beam",
138138
],
139-
shard_count = 18,
139+
shard_count = 22,
140140
runtime_deps = [
141141
"@emqtt//:erlang_app",
142142
"@meck//:erlang_app",

deps/rabbitmq_mqtt/test/auth_SUITE.erl

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ sub_groups() ->
7272
[client_id_from_cert_san_dns,
7373
invalid_client_id_from_cert_san_dns
7474
]},
75+
{ssl_user_with_client_id_in_cert_san_dns_1, [],
76+
[client_id_from_cert_san_dns_1
77+
]},
78+
{ssl_user_with_client_id_in_cert_san_email, [],
79+
[client_id_from_cert_san_email
80+
]},
7581
{ssl_user_with_client_id_in_cert_dn, [],
7682
[client_id_from_cert_dn
7783
]},
@@ -206,6 +212,17 @@ mqtt_config(ssl_user_with_client_id_in_cert_san_dns) ->
206212
{allow_anonymous, false},
207213
{ssl_cert_client_id_from, subject_alternative_name},
208214
{ssl_cert_login_san_type, dns}]};
215+
mqtt_config(ssl_user_with_client_id_in_cert_san_dns_1) ->
216+
{rabbitmq_mqtt, [{ssl_cert_login, true},
217+
{allow_anonymous, false},
218+
{ssl_cert_client_id_from, subject_alternative_name},
219+
{ssl_cert_login_san_type, dns},
220+
{ssl_cert_login_san_index, 1}]};
221+
mqtt_config(ssl_user_with_client_id_in_cert_san_email) ->
222+
{rabbitmq_mqtt, [{ssl_cert_login, true},
223+
{allow_anonymous, false},
224+
{ssl_cert_client_id_from, subject_alternative_name},
225+
{ssl_cert_login_san_type, email}]};
209226
mqtt_config(ssl_user_with_client_id_in_cert_dn) ->
210227
{rabbitmq_mqtt, [{ssl_cert_login, true},
211228
{allow_anonymous, false},
@@ -216,6 +233,8 @@ mqtt_config(_) ->
216233

217234
auth_config(T) when T == client_id_propagation;
218235
T == ssl_user_with_client_id_in_cert_san_dns;
236+
T == ssl_user_with_client_id_in_cert_san_dns_1;
237+
T == ssl_user_with_client_id_in_cert_san_email;
219238
T == ssl_user_with_client_id_in_cert_dn ->
220239
{rabbit, [
221240
{auth_backends, [rabbit_auth_backend_mqtt_mock]}
@@ -316,6 +335,8 @@ init_per_testcase(T, Config)
316335
when T =:= client_id_propagation;
317336
T =:= invalid_client_id_from_cert_san_dns;
318337
T =:= client_id_from_cert_san_dns;
338+
T =:= client_id_from_cert_san_dns_1;
339+
T =:= client_id_from_cert_san_email;
319340
T =:= client_id_from_cert_dn ->
320341
SetupProcess = setup_rabbit_auth_backend_mqtt_mock(Config),
321342
rabbit_ct_helpers:set_config(Config, {mock_setup_process, SetupProcess});
@@ -444,6 +465,8 @@ end_per_testcase(T, Config)
444465
when T =:= client_id_propagation;
445466
T =:= invalid_client_id_from_cert_san_dns;
446467
T =:= client_id_from_cert_san_dns;
468+
T =:= client_id_from_cert_san_dns_1;
469+
T =:= client_id_from_cert_san_email;
447470
T =:= client_id_from_cert_dn ->
448471
SetupProcess = ?config(mock_setup_process, Config),
449472
SetupProcess ! stop;
@@ -500,7 +523,31 @@ user_credentials_auth(Config) ->
500523
Config).
501524

502525
client_id_from_cert_san_dns(Config) ->
503-
ExpectedClientId = <<"rabbit_client_id">>, % Found in the client's certificate as SAN type CLIENT_ID
526+
ExpectedClientId = <<"rabbit_client_id">>, % Found in the client's certificate as SAN type DNS
527+
MqttClientId = ExpectedClientId,
528+
{ok, C} = connect_ssl(MqttClientId, Config),
529+
{ok, _} = emqtt:connect(C),
530+
[{authentication, AuthProps}] = rpc(Config, 0,
531+
rabbit_auth_backend_mqtt_mock,
532+
get,
533+
[authentication]),
534+
?assertEqual(ExpectedClientId, proplists:get_value(client_id, AuthProps)),
535+
ok = emqtt:disconnect(C).
536+
537+
client_id_from_cert_san_dns_1(Config) ->
538+
ExpectedClientId = <<"rabbit_client_id_ext">>, % Found in the client's certificate as SAN type DNS
539+
MqttClientId = ExpectedClientId,
540+
{ok, C} = connect_ssl(MqttClientId, Config),
541+
{ok, _} = emqtt:connect(C),
542+
[{authentication, AuthProps}] = rpc(Config, 0,
543+
rabbit_auth_backend_mqtt_mock,
544+
get,
545+
[authentication]),
546+
?assertEqual(ExpectedClientId, proplists:get_value(client_id, AuthProps)),
547+
ok = emqtt:disconnect(C).
548+
549+
client_id_from_cert_san_email(Config) ->
550+
ExpectedClientId = <<"rabbit_client@localhost">>, % Found in the client's certificate as SAN type email
504551
MqttClientId = ExpectedClientId,
505552
{ok, C} = connect_ssl(MqttClientId, Config),
506553
{ok, _} = emqtt:connect(C),

0 commit comments

Comments
 (0)