Also remove /usr/local/share/ca-certificates/debian.org
[mirror/dsa-puppet.git] / modules / ssl / manifests / init.pp
1 class ssl {
2         $caconf = '/etc/ca-certificates.conf'
3
4         package { 'openssl':
5                 ensure   => installed,
6         }
7         package { 'ssl-cert':
8                 ensure   => installed,
9         }
10         package { 'ca-certificates':
11                 ensure   => installed,
12         }
13
14         if has_role('insecure_ssl') {
15                 $extra_ssl_certs_flags = ' --default'
16                 $ssl_certs_config = 'puppet:///modules/ssl/ca-certificates-global.conf'
17         } else {
18                 $extra_ssl_certs_flags = ''
19                 $ssl_certs_config = 'puppet:///modules/ssl/ca-certificates.conf'
20         }
21
22         file { '/etc/ssl/README':
23                 mode   => '0444',
24                 source => 'puppet:///modules/ssl/README',
25         }
26         file { '/etc/ca-certificates.conf':
27                 source => $ssl_certs_config,
28                 notify  => Exec['refresh_normal_hashes'],
29         }
30         file { '/etc/ca-certificates-debian.conf':
31                 mode    => '0444',
32                 source => 'puppet:///modules/ssl/ca-certificates-debian.conf',
33                 notify  => Exec['refresh_ca_debian_hashes'],
34         }
35         file { '/etc/ca-certificates-global.conf':
36                 source => 'puppet:///modules/ssl/ca-certificates-global.conf',
37                 notify  => Exec['refresh_ca_global_hashes'],
38         }
39
40         file { '/etc/apt/apt.conf.d/local-ssl-ca-global':
41                 mode   => '0444',
42                 source => 'puppet:///modules/ssl/local-ssl-ca-global',
43         }
44
45         file { '/etc/ssl/certs/ssl-cert-snakeoil.pem':
46                 ensure => absent,
47                 notify => Exec['refresh_normal_hashes'],
48         }
49         file { '/etc/ssl/private/ssl-cert-snakeoil.key':
50                 ensure => absent,
51         }
52
53         file { '/etc/ssl/servicecerts':
54                 ensure   => absent,
55         }
56
57         file { '/usr/local/share/ca-certificates/debian.org':
58                 ensure   => absent,
59                 purge    => true,
60                 recurse  => true,
61                 force    => true,
62                 notify   => [ Exec['refresh_normal_hashes'], Exec['refresh_ca_global_hashes'] ],
63         }
64         file { '/etc/ssl/certs/README':
65                 ensure => absent,
66         }
67         file { '/etc/ssl/ca-debian':
68                 ensure => directory,
69                 mode   => '0755',
70         }
71         file { '/etc/ssl/ca-debian/README':
72                 ensure => absent,
73         }
74         file { '/etc/ssl/ca-global':
75                 ensure => directory,
76                 mode   => '0755',
77         }
78         file { '/etc/ssl/ca-global/README':
79                 ensure => absent,
80         }
81         file { '/etc/ssl/debian':
82                 ensure   => directory,
83                 source   => 'puppet:///files/empty/',
84                 mode     => '0644', # this works; otherwise all files are +x
85                 purge    => true,
86                 recurse  => true,
87                 force    => true,
88         }
89         file { '/etc/ssl/debian/certs':
90                 ensure  => directory,
91                 mode    => '0755',
92         }
93         file { '/etc/ssl/debian/crls':
94                 ensure  => directory,
95                 mode    => '0755',
96         }
97         file { '/etc/ssl/debian/certs/thishost.crt':
98                 content => inline_template('<%= File.read(scope().call_function("hiera", ["paths.auto_clientcerts_dir"]) + "/" + @fqdn + ".client.crt") %>'),
99                 notify  => Exec['refresh_debian_hashes'],
100         }
101         file { '/etc/ssl/debian/certs/ca.crt':
102                 content => inline_template('<%= File.read(scope().call_function("hiera", ["paths.auto_clientcerts_dir"]) + "/ca.crt") %>'),
103                 notify  => Exec['refresh_debian_hashes'],
104         }
105         file { '/etc/ssl/debian/crls/ca.crl':
106                 content => inline_template('<%= File.read(scope().call_function("hiera", ["paths.auto_clientcerts_dir"]) + "/ca.crl") %>'),
107         }
108         file { '/etc/ssl/debian/certs/thishost-server.crt':
109                 content => inline_template('<%= File.read(scope().call_function("hiera", ["paths.auto_certs_dir"]) + "/" + @fqdn + ".crt") %>'),
110                 notify  => Exec['refresh_debian_hashes'],
111         }
112
113         file { '/etc/ssl/debian/keys/thishost.key':
114                 ensure => absent,
115         }
116         file { '/etc/ssl/debian/keys/thishost-server.key':
117                 ensure => absent,
118         }
119         file { '/etc/ssl/debian/keys':
120                 ensure => absent,
121                 force    => true,
122         }
123         file { '/etc/ssl/private/thishost.key':
124                 content => inline_template('<%= File.read(scope().call_function("hiera", ["paths.auto_clientcerts_dir"]) + "/" + @fqdn + ".key") %>'),
125                 mode    => '0440',
126                 group   => ssl-cert,
127                 require => Package['ssl-cert'],
128         }
129         file { '/etc/ssl/private/thishost-server.key':
130                 content => inline_template('<%= File.read(scope().call_function("hiera", ["paths.auto_certs_dir"]) + "/" + @fqdn + ".key") %>'),
131                 mode    => '0440',
132                 group   => ssl-cert,
133                 require => Package['ssl-cert'],
134         }
135
136         $updatecacertsdsa = '/usr/local/sbin/update-ca-certificates-dsa'
137         if (versioncmp($::lsbmajdistrelease, '9') >= 0) {
138                 file { $updatecacertsdsa:
139                         ensure => absent,
140                 }
141                 $updatecacerts = '/usr/sbin/update-ca-certificates'
142         } else {
143                 file { $updatecacertsdsa:
144                         mode   => '0555',
145                         source => 'puppet:///modules/ssl/update-ca-certificates-dsa',
146                 }
147                 $updatecacerts = $updatecacertsdsa
148         }
149
150         exec { 'refresh_debian_hashes':
151                 command     => 'c_rehash /etc/ssl/debian/certs',
152                 refreshonly => true,
153                 require     => Package['openssl'],
154         }
155
156         exec { 'refresh_normal_hashes':
157                 # NOTE 1: always use update-ca-certificates to manage hashes in
158                 #         /etc/ssl/certs otherwise /etc/ssl/ca-certificates.crt will
159                 #         get a hash overriding the hash that would have been generated
160                 #         for another certificate ... which is problem, comrade
161                 # NOTE 2: always ask update-ca-certificates to freshen (-f) the links
162                 command     => "/usr/sbin/update-ca-certificates --fresh${extra_ssl_certs_flags}",
163                 refreshonly => true,
164                 require     => Package['ca-certificates'],
165         }
166         exec { 'refresh_ca_debian_hashes':
167                 command     => "${updatecacerts} --fresh --certsconf /etc/ca-certificates-debian.conf --localcertsdir /dev/null --etccertsdir /etc/ssl/ca-debian --hooksdir /dev/null",
168                 refreshonly => true,
169                 require     => [
170                         Package['ca-certificates'],
171                         File['/etc/ssl/ca-debian'],
172                         File['/etc/ca-certificates-debian.conf'],
173                         File[$updatecacertsdsa],
174                 ]
175         }
176         exec { 'refresh_ca_global_hashes':
177                 command     => "${updatecacerts} --fresh --default --certsconf /etc/ca-certificates-global.conf --etccertsdir /etc/ssl/ca-global --hooksdir /dev/null",
178                 refreshonly => true,
179                 require     => [
180                         Package['ca-certificates'],
181                         File['/etc/ssl/ca-global'],
182                         File['/etc/ca-certificates-global.conf'],
183                         File[$updatecacertsdsa],
184                 ]
185         }
186
187 }