|
1 | 1 | # @summary This define creates the openvpn ca and ssl certificates |
2 | 2 | # |
| 3 | +# @param dn_mode EasyRSA X509 DN mode. |
3 | 4 | # @param country Country to be used for the SSL certificate |
4 | 5 | # @param province Province to be used for the SSL certificate |
5 | 6 | # @param city City to be used for the SSL certificate |
|
26 | 27 | # } |
27 | 28 | # |
28 | 29 | define openvpn::ca ( |
| 30 | + Enum['org','cn_only'] $dn_mode = 'org', |
29 | 31 | Optional[String] $country = undef, |
30 | 32 | Optional[String] $province = undef, |
31 | 33 | Optional[String] $city = undef, |
|
152 | 154 | 'ca_expire' => $ca_expire, |
153 | 155 | 'key_expire' => $key_expire, |
154 | 156 | 'crl_days' => $crl_days, |
| 157 | + 'dn_mode' => $dn_mode, |
155 | 158 | 'digest' => $digest, |
156 | 159 | 'country' => $country, |
157 | 160 | 'province' => $province, |
|
173 | 176 | } |
174 | 177 | } |
175 | 178 |
|
| 179 | + $_initca_environment = $dn_mode ? { |
| 180 | + 'cn_only' => ["EASYRSA_REQ_CN=${common_name} CA"], |
| 181 | + default => [], |
| 182 | + } |
| 183 | + |
176 | 184 | exec { "initca ${name}": |
177 | | - command => './easyrsa --batch init-pki && ./easyrsa --batch build-ca nopass', |
178 | | - cwd => "${server_directory}/${name}/easy-rsa", |
179 | | - creates => "${server_directory}/${name}/easy-rsa/keys/ca.crt", |
180 | | - provider => 'shell', |
181 | | - require => File["${server_directory}/${name}/easy-rsa/vars"], |
| 185 | + command => './easyrsa --batch init-pki && ./easyrsa --batch build-ca nopass', |
| 186 | + cwd => "${server_directory}/${name}/easy-rsa", |
| 187 | + creates => "${server_directory}/${name}/easy-rsa/keys/ca.crt", |
| 188 | + environment => $_initca_environment, |
| 189 | + provider => 'shell', |
| 190 | + require => File["${server_directory}/${name}/easy-rsa/vars"], |
182 | 191 | } |
183 | 192 |
|
184 | 193 | if ($ssl_key_algo == 'rsa') { |
|
193 | 202 | } |
194 | 203 |
|
195 | 204 | exec { "generate server cert ${name}": |
196 | | - command => "./easyrsa build-server-full ${common_name} nopass", |
| 205 | + command => "./easyrsa build-server-full '${common_name}' nopass", |
197 | 206 | cwd => "${server_directory}/${name}/easy-rsa", |
198 | 207 | creates => "${server_directory}/${name}/easy-rsa/keys/private/${common_name}.key", |
199 | 208 | provider => 'shell', |
|
206 | 215 | } |
207 | 216 |
|
208 | 217 | exec { "create crl.pem on ${name}": |
209 | | - command => ". ./vars && EASYRSA_REQ_CN='' EASYRSA_REQ_OU='' openssl ca -gencrl -out ${server_directory}/${name}/crl.pem -config ${server_directory}/${name}/easy-rsa/openssl.cnf", |
| 218 | + command => './easyrsa gen-crl', |
210 | 219 | cwd => "${server_directory}/${name}/easy-rsa", |
211 | | - creates => "${server_directory}/${name}/crl.pem", |
212 | | - group => $group_to_set, |
| 220 | + creates => "${server_directory}/${name}/easy-rsa/keys/crl.pem", |
213 | 221 | provider => 'shell', |
214 | 222 | require => Exec["generate server cert ${name}"], |
215 | 223 | } |
| 224 | + -> exec { "copy created crl.pem to ${name} keys directory": |
| 225 | + command => "cp ${server_directory}/${name}/easy-rsa/keys/crl.pem ${server_directory}/${name}/crl.pem", |
| 226 | + creates => "${server_directory}/${name}/crl.pem", |
| 227 | + provider => 'shell', |
| 228 | + } |
216 | 229 | } |
217 | 230 | default: { |
218 | 231 | fail("unexepected value for EasyRSA version, got '${openvpn::easyrsa_version}', expect 2.0 or 3.0.") |
|
244 | 257 | require => Exec["generate server cert ${name}"], |
245 | 258 | } |
246 | 259 | } |
247 | | - |
248 | | - file { "${server_directory}/${name}/easy-rsa/keys/crl.pem": |
249 | | - ensure => link, |
250 | | - target => "${server_directory}/${name}/crl.pem", |
251 | | - require => Exec["create crl.pem on ${name}"], |
252 | | - } |
253 | 260 | } |
0 commit comments