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