Skip to content

Commit 35bb069

Browse files
committed
Added ssl_versions parameter
This commit adds the ssl_versions parameter. This allows users to choose which versions of SSL that RabbitMQ should accept.
1 parent 52d3557 commit 35bb069

File tree

6 files changed

+76
-6
lines changed

6 files changed

+76
-6
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ all features against earlier versions.
3434
* rabbitmq configuration file.
3535
* rabbitmq service.
3636

37-
###Beginning with rabbitmq
37+
###Beginning with rabbitmq
3838

3939

4040
```puppet
@@ -350,6 +350,10 @@ rabbitmq.config SSL verify setting.
350350

351351
rabbitmq.config `fail_if_no_peer_cert` setting.
352352

353+
####`ssl_versions`
354+
355+
Choose which SSL versions to enable. Example: `['tlsv1.2', 'tlsv1.1']`
356+
353357
####`stomp_port`
354358

355359
The port to use for Stomp.

manifests/config.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
$ssl_stomp_port = $rabbitmq::ssl_stomp_port
3232
$ssl_verify = $rabbitmq::ssl_verify
3333
$ssl_fail_if_no_peer_cert = $rabbitmq::ssl_fail_if_no_peer_cert
34+
$ssl_versions = $rabbitmq::ssl_versions
3435
$stomp_port = $rabbitmq::stomp_port
3536
$wipe_db_on_cookie_change = $rabbitmq::wipe_db_on_cookie_change
3637
$config_variables = $rabbitmq::config_variables

manifests/init.pp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
$ssl_stomp_port = $rabbitmq::params::ssl_stomp_port,
4040
$ssl_verify = $rabbitmq::params::ssl_verify,
4141
$ssl_fail_if_no_peer_cert = $rabbitmq::params::ssl_fail_if_no_peer_cert,
42+
$ssl_versions = $rabbitmq::params::ssl_versions,
4243
$stomp_ensure = $rabbitmq::params::stomp_ensure,
4344
$ldap_auth = $rabbitmq::params::ldap_auth,
4445
$ldap_server = $rabbitmq::params::ldap_server,
@@ -117,6 +118,14 @@
117118
warning('$ssl_stomp_port requires that $ssl => true and will be ignored')
118119
}
119120

121+
if $ssl_versions {
122+
if $ssl {
123+
validate_array($ssl_versions)
124+
} else {
125+
fail('$ssl_versions requires that $ssl => true')
126+
}
127+
}
128+
120129
# This needs to happen here instead of params.pp because
121130
# $package_source needs to override the constructed value in params.pp
122131
if $package_source { # $package_source was specified by user so use that one

manifests/params.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
$ssl_stomp_port = '6164'
7474
$ssl_verify = 'verify_none'
7575
$ssl_fail_if_no_peer_cert = false
76+
$ssl_versions = undef
7677
$stomp_ensure = false
7778
$ldap_auth = false
7879
$ldap_server = 'ldap'

spec/classes/rabbitmq_spec.rb

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
context 'on Debian' do
4040
let(:params) {{ :manage_repos => true }}
4141
let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }}
42-
42+
4343
it 'includes rabbitmq::repo::apt' do
4444
should contain_class('rabbitmq::repo::apt')
4545
end
@@ -69,7 +69,7 @@
6969
context 'on Debian' do
7070
let(:params) {{ :repos_ensure => true }}
7171
let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }}
72-
72+
7373
it 'includes rabbitmq::repo::apt' do
7474
should contain_class('rabbitmq::repo::apt')
7575
end
@@ -89,7 +89,7 @@
8989
context 'on Debian' do
9090
let(:params) {{ :manage_repos => true, :repos_ensure => false }}
9191
let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }}
92-
92+
9393
it 'includes rabbitmq::repo::apt' do
9494
should contain_class('rabbitmq::repo::apt')
9595
end
@@ -106,7 +106,7 @@
106106
context 'on Debian' do
107107
let(:params) {{ :manage_repos => true, :repos_ensure => true }}
108108
let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }}
109-
109+
110110
it 'includes rabbitmq::repo::apt' do
111111
should contain_class('rabbitmq::repo::apt')
112112
end
@@ -503,6 +503,55 @@
503503
end
504504
end
505505

506+
describe 'ssl options with specific ssl versions' do
507+
let(:params) {
508+
{ :ssl => true,
509+
:ssl_port => 3141,
510+
:ssl_cacert => '/path/to/cacert',
511+
:ssl_cert => '/path/to/cert',
512+
:ssl_key => '/path/to/key',
513+
:ssl_versions => ['tlsv1.2', 'tlsv1.1']
514+
} }
515+
516+
it 'should set ssl options to specified values' do
517+
should contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[3141\]})
518+
should contain_file('rabbitmq.config').with_content(%r{ssl_options, \[\{cacertfile,"/path/to/cacert"})
519+
should contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"})
520+
should contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key})
521+
should contain_file('rabbitmq.config').with_content(%r{ssl, \[\{versions, \['tlsv1.1', 'tlsv1.2'\]\}\]})
522+
end
523+
end
524+
525+
describe 'ssl options with invalid ssl_versions type' do
526+
let(:params) {
527+
{ :ssl => true,
528+
:ssl_port => 3141,
529+
:ssl_cacert => '/path/to/cacert',
530+
:ssl_cert => '/path/to/cert',
531+
:ssl_key => '/path/to/key',
532+
:ssl_versions => 'tlsv1.2, tlsv1.1'
533+
} }
534+
535+
it 'fails' do
536+
expect{subject}.to raise_error(/is not an Array/)
537+
end
538+
end
539+
540+
describe 'ssl options with ssl_versions and not ssl' do
541+
let(:params) {
542+
{ :ssl => false,
543+
:ssl_port => 3141,
544+
:ssl_cacert => '/path/to/cacert',
545+
:ssl_cert => '/path/to/cert',
546+
:ssl_key => '/path/to/key',
547+
:ssl_versions => ['tlsv1.2', 'tlsv1.1']
548+
} }
549+
550+
it 'fails' do
551+
expect{subject}.to raise_error(/^\$ssl_versions requires that \$ssl => true/)
552+
end
553+
end
554+
506555
describe 'ssl admin options' do
507556
let(:params) {
508557
{ :ssl => true,

templates/rabbitmq.config.erb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,18 @@
1616
{tcp_listeners, []},
1717
<%- end -%>
1818
<%- if @ssl -%>
19+
<%- if @ssl_versions -%>
20+
{ssl, [{versions, [<%= @ssl_versions.sort.map { |v| "'#{v}'" }.join(', ') %>]}]},
21+
<%- end -%>
1922
{ssl_listeners, [<%= @ssl_port %>]},
2023
{ssl_options, [<%- if @ssl_cacert != 'UNSET' -%>{cacertfile,"<%= @ssl_cacert %>"},<%- end -%>
2124
{certfile,"<%= @ssl_cert %>"},
2225
{keyfile,"<%= @ssl_key %>"},
2326
{verify,<%= @ssl_verify %>},
24-
{fail_if_no_peer_cert,<%= @ssl_fail_if_no_peer_cert %>}]},
27+
{fail_if_no_peer_cert,<%= @ssl_fail_if_no_peer_cert %>}
28+
<%- if @ssl_versions -%>
29+
,{ssl, [{versions, [<%= @ssl_versions.sort.map { |v| "'#{v}'" }.join(', ') %>]}]}
30+
<% end -%>]},
2531
<%- end -%>
2632
<% if @config_variables -%>
2733
<%- @config_variables.keys.sort.each do |key| -%>

0 commit comments

Comments
 (0)