Skip to content

Commit 3ff7e82

Browse files
LoisSotoLopezmichaelklishin
authored andcommitted
Provide specific f. to fix client ssl options
Provides a specific function to fix client ssl options, i.e.: apply all fixes that are applied for TLS listeneres and clients on previous versions but also sets `cacerts` option to CA certificates obtained by `public_key:cacerts_get`, only when no `cacertfile` or `cacerts` are provided.
1 parent f4e6893 commit 3ff7e82

File tree

5 files changed

+27
-4
lines changed

5 files changed

+27
-4
lines changed

deps/amqp10_client/src/amqp10_client_frame_reader.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ init([Sup, ConnConfig]) when is_map(ConnConfig) ->
105105
{ok, expecting_connection_pid, State}
106106
end.
107107

108-
connect(Address, Port, #{tls_opts := {secure_port, Opts}}) ->
108+
connect(Address, Port, #{tls_opts := {secure_port, Opts0}}) ->
109+
Opts = rabbit_ssl_options:fix_client(Opts0),
109110
case ssl:connect(Address, Port, ?RABBIT_TCP_OPTS ++ Opts) of
110111
{ok, S} ->
111112
{ssl, S};

deps/amqp_client/src/amqp_network_connection.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ do_connect({Addr, Family},
137137
[Family | ?RABBIT_TCP_OPTS] ++ ExtraOpts,
138138
Timeout) of
139139
{ok, Sock} ->
140-
SslOpts = rabbit_ssl_options:fix(
140+
SslOpts = rabbit_ssl_options:fix_client(
141141
orddict:to_list(
142142
orddict:merge(fun (_, _A, B) -> B end,
143143
orddict:from_list(GlobalSslOpts),

deps/rabbit_common/src/rabbit_ssl_options.erl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
-module(rabbit_ssl_options).
99

1010
-export([fix/1]).
11+
-export([fix_client/1]).
1112

1213

1314
-define(BAD_SSL_PROTOCOL_VERSIONS, [
@@ -22,6 +23,27 @@ fix(Config) ->
2223
fix_ssl_protocol_versions(
2324
hibernate_after(Config))).
2425

26+
-spec fix_client(rabbit_types:infos()) -> rabbit_types:infos().
27+
fix_client(Config) ->
28+
fix_cacerts(
29+
fix(Config)).
30+
31+
fix_cacerts(SslOptsConfig) ->
32+
CACerts = proplists:get_value(cacerts, SslOptsConfig, undefined),
33+
CACertfile = proplists:get_value(cacertfile, SslOptsConfig, undefined),
34+
case {CACerts, CACertfile} of
35+
{undefined, undefined} ->
36+
try public_key:cacerts_get() of
37+
CaCerts ->
38+
[{cacerts, CaCerts} | SslOptsConfig]
39+
catch
40+
_ ->
41+
SslOptsConfig
42+
end;
43+
_CaCerts ->
44+
SslOptsConfig
45+
end.
46+
2547
fix_verify_fun(SslOptsConfig) ->
2648
%% Starting with ssl 4.0.1 in Erlang R14B, the verify_fun function
2749
%% takes 3 arguments and returns a tuple.

deps/rabbitmq_auth_backend_http/src/rabbit_auth_backend_http.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ do_http_req(Path0, Query) ->
205205
ssl_options() ->
206206
case application:get_env(rabbitmq_auth_backend_http, ssl_options) of
207207
{ok, Opts0} when is_list(Opts0) ->
208-
Opts1 = [{ssl, rabbit_networking:fix_ssl_options(Opts0)}],
208+
Opts1 = [{ssl, rabbit_ssl_options:fix_client(Opts0)}],
209209
case application:get_env(rabbitmq_auth_backend_http, ssl_hostname_verification) of
210210
{ok, wildcard} ->
211211
rabbit_log:debug("Enabling wildcard-aware hostname verification for HTTP client connections"),

deps/rabbitmq_auth_backend_ldap/src/rabbit_auth_backend_ldap.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ ssl_conf() ->
761761
end.
762762

763763
ssl_options() ->
764-
Opts0 = rabbit_networking:fix_ssl_options(env(ssl_options)),
764+
Opts0 = rabbit_ssl_options:fix_client(env(ssl_options)),
765765
case env(ssl_hostname_verification, undefined) of
766766
wildcard ->
767767
rabbit_log_ldap:debug("Enabling wildcard-aware hostname verification for LDAP client connections"),

0 commit comments

Comments
 (0)