Skip to content

Commit ec9a24b

Browse files
Add client_renegotiation ssl option, use more ssl options in management plugin (voxpupuli#1024)
Add ssl options for client renegotiation to rabbitmq-server --------- Co-authored-by: kperronne <[email protected]>
1 parent c5afc5f commit ec9a24b

File tree

5 files changed

+65
-1
lines changed

5 files changed

+65
-1
lines changed

REFERENCE.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ The following parameters are available in the `rabbitmq` class:
264264
* [`ssl_cacert`](#-rabbitmq--ssl_cacert)
265265
* [`ssl_cert`](#-rabbitmq--ssl_cert)
266266
* [`ssl_cert_password`](#-rabbitmq--ssl_cert_password)
267+
* [`ssl_client_renegotiation`](#-rabbitmq--ssl_client_renegotiation)
267268
* [`ssl_depth`](#-rabbitmq--ssl_depth)
268269
* [`ssl_dhfile`](#-rabbitmq--ssl_dhfile)
269270
* [`ssl_erl_dist`](#-rabbitmq--ssl_erl_dist)
@@ -882,6 +883,14 @@ Password used when generating CSR.
882883

883884
Default value: `undef`
884885

886+
##### <a name="-rabbitmq--ssl_client_renegotiation"></a>`ssl_client_renegotiation`
887+
888+
Data type: `Optional[Boolean]`
889+
890+
Allow ssl client renegotiation
891+
892+
Default value: `undef`
893+
885894
##### <a name="-rabbitmq--ssl_depth"></a>`ssl_depth`
886895

887896
Data type: `Optional[Integer]`

manifests/config.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
$ssl_stomp_port = $rabbitmq::ssl_stomp_port
5757
$ssl_verify = $rabbitmq::ssl_verify
5858
$ssl_fail_if_no_peer_cert = $rabbitmq::ssl_fail_if_no_peer_cert
59+
$ssl_client_renegotiation = $rabbitmq::ssl_client_renegotiation
5960
$ssl_secure_renegotiate = $rabbitmq::ssl_secure_renegotiate
6061
$ssl_reuse_sessions = $rabbitmq::ssl_reuse_sessions
6162
$ssl_honor_cipher_order = $rabbitmq::ssl_honor_cipher_order

manifests/init.pp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,8 @@
263263
# Cert to use for SSL.
264264
# @param ssl_cert_password
265265
# Password used when generating CSR.
266+
# @param ssl_client_renegotiation
267+
# Allow ssl client renegotiation
266268
# @param ssl_depth
267269
# SSL verification depth.
268270
# @param ssl_dhfile
@@ -419,13 +421,14 @@
419421
Enum['verify_none','verify_peer'] $ssl_management_verify = 'verify_none',
420422
Boolean $ssl_management_fail_if_no_peer_cert = false,
421423
Optional[Array] $ssl_versions = undef,
424+
Optional[Boolean] $ssl_client_renegotiation = undef,
422425
Boolean $ssl_secure_renegotiate = true,
423426
Boolean $ssl_reuse_sessions = true,
424427
Boolean $ssl_honor_cipher_order = true,
425428
Optional[Stdlib::Absolutepath] $ssl_dhfile = undef,
426429
Array $ssl_ciphers = [],
427430
Enum['true','false','peer','best_effort'] $ssl_crl_check = 'false',
428-
Optional[Stdlib::Absolutepath] $ssl_crl_cache_hash_dir = undef,
431+
Optional[Stdlib::Absolutepath] $ssl_crl_cache_hash_dir = undef,
429432
Optional[Integer] $ssl_crl_cache_http_timeout = undef,
430433
Boolean $stomp_ensure = false,
431434
Boolean $ldap_auth = false,

spec/classes/rabbitmq_spec.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,6 +1194,34 @@
11941194
end
11951195
end
11961196

1197+
# tlsv1.3 not supported on older RMQ/Erlang with this distro
1198+
describe 'ssl options with ssl version tlsv1.3' do
1199+
let(:params) do
1200+
{ ssl: true,
1201+
ssl_port: 3141,
1202+
ssl_cacert: '/path/to/cacert',
1203+
ssl_cert: '/path/to/cert',
1204+
ssl_key: '/path/to/key',
1205+
ssl_versions: ['tlsv1.3'] }
1206+
end
1207+
1208+
it 'sets ssl options to specified values' do
1209+
is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[3141\]})
1210+
is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_options, \[})
1211+
is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"})
1212+
is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"})
1213+
is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key})
1214+
is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl, \[\{versions, \['tlsv1.3'\]\}\]})
1215+
is_expected.to contain_file('rabbitmq.config').with_content(%r{versions, \['tlsv1.3'\]})
1216+
end
1217+
1218+
it 'does not set ssl negotiation options with tlsv1.3' do
1219+
is_expected.to contain_file('rabbitmq.config'). \
1220+
without_content(%r{client_renegotiation}). \
1221+
without_content(%r{secure_renegotiate})
1222+
end
1223+
end
1224+
11971225
describe 'ssl options with ssl_versions and not ssl' do
11981226
let(:params) do
11991227
{ ssl: false,
@@ -1379,6 +1407,16 @@
13791407
it { is_expected.to contain_file('rabbitmq.config').without_content(%r{dhfile,}) }
13801408
end
13811409

1410+
describe 'ssl with ssl_client_renegotiation false' do
1411+
let(:params) do
1412+
{ ssl: true,
1413+
ssl_interface: '0.0.0.0',
1414+
ssl_client_renegotiation: false }
1415+
end
1416+
1417+
it { is_expected.to contain_file('rabbitmq.config').with_content(%r{client_renegotiation,false}) }
1418+
end
1419+
13821420
describe 'ssl with ssl_secure_renegotiate false' do
13831421
let(:params) do
13841422
{ ssl: true,

templates/rabbitmq.config.epp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,12 @@
7777
<%- if $rabbitmq::config::ssl_dhfile {-%>
7878
{dhfile, "<%= $rabbitmq::config::ssl_dhfile %>"},
7979
<%- } -%>
80+
<%- if !$rabbitmq::config::ssl_versions or !('tlsv1.3' in $rabbitmq::config::ssl_versions) {-%>
81+
<%- if $rabbitmq::config::ssl_client_renegotiation != undef {-%>
82+
{client_renegotiation,<%= $rabbitmq::config::ssl_client_renegotiation %>},
83+
<%- } -%>
8084
{secure_renegotiate,<%= $rabbitmq::config::ssl_secure_renegotiate %>},
85+
<%- } -%>
8186
{reuse_sessions,<%= $rabbitmq::config::ssl_reuse_sessions %>},
8287
{honor_cipher_order,<%= $rabbitmq::config::ssl_honor_cipher_order %>},
8388
{verify,<%= $rabbitmq::config::ssl_verify %>},
@@ -150,6 +155,14 @@
150155
<%- } -%>
151156
{certfile, "<%= $rabbitmq::config::ssl_management_cert %>"},
152157
{keyfile, "<%= $rabbitmq::config::ssl_management_key %>"},
158+
<%- if !$rabbitmq::config::ssl_versions or !('tlsv1.3' in $rabbitmq::config::ssl_versions) {-%>
159+
<%- if $rabbitmq::config::ssl_client_renegotiation != undef {-%>
160+
{client_renegotiation,<%= $rabbitmq::config::ssl_client_renegotiation %>},
161+
<%- } -%>
162+
{secure_renegotiate,<%= $rabbitmq::config::ssl_secure_renegotiate %>},
163+
<%- } -%>
164+
{reuse_sessions,<%= $rabbitmq::config::ssl_reuse_sessions %>},
165+
{honor_cipher_order,<%= $rabbitmq::config::ssl_honor_cipher_order %>},
153166
{verify,<%= $rabbitmq::config::ssl_management_verify %>},
154167
{fail_if_no_peer_cert,<%= $rabbitmq::config::ssl_management_fail_if_no_peer_cert %>}
155168
<%- if $rabbitmq::config::ssl_versions {-%>

0 commit comments

Comments
 (0)