From b3b90ac434a01ab3f6eec2fa0650d2a9d210eded Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 12 Sep 2018 19:11:49 +0100 Subject: [PATCH] Use openssl_x509_certificate resource to generate certificates --- cookbooks/exim/recipes/default.rb | 22 +++++---------- cookbooks/exim/templates/default/ssl.cnf.erb | 8 ------ cookbooks/ssl/resources/certificate.rb | 28 ++++++++------------ cookbooks/ssl/templates/default/ssl.cnf.erb | 20 -------------- 4 files changed, 18 insertions(+), 60 deletions(-) delete mode 100644 cookbooks/exim/templates/default/ssl.cnf.erb delete mode 100644 cookbooks/ssl/templates/default/ssl.cnf.erb diff --git a/cookbooks/exim/recipes/default.rb b/cookbooks/exim/recipes/default.rb index 65ab8342f..6b20f5181 100644 --- a/cookbooks/exim/recipes/default.rb +++ b/cookbooks/exim/recipes/default.rb @@ -33,23 +33,15 @@ group "ssl-cert" do append true end -template "/tmp/exim.ssl.cnf" do - source "ssl.cnf.erb" +openssl_x509_certificate "/etc/ssl/certs/exim.pem" do + key_file "/etc/ssl/private/exim.key" owner "root" - group "root" - mode 0o644 - not_if do - File.exist?("/etc/ssl/certs/exim.pem") && File.exist?("/etc/ssl/private/exim.key") - end -end - -execute "/etc/ssl/certs/exim.pem" do - command "openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/exim.key -out /etc/ssl/certs/exim.pem -days 3650 -nodes -config /tmp/exim.ssl.cnf" - user "root" group "ssl-cert" - not_if do - File.exist?("/etc/ssl/certs/exim.pem") && File.exist?("/etc/ssl/private/exim.key") - end + mode 0o640 + org "OpenStreetMap" + email "postmaster@openstreetmap.org" + common_name node[:fqdn] + expire 3650 end service "exim4" do diff --git a/cookbooks/exim/templates/default/ssl.cnf.erb b/cookbooks/exim/templates/default/ssl.cnf.erb deleted file mode 100644 index 406dcb94a..000000000 --- a/cookbooks/exim/templates/default/ssl.cnf.erb +++ /dev/null @@ -1,8 +0,0 @@ -[req] -prompt = no -distinguished_name = req_dn - -[req_dn] -organizationName = OpenStreetMap -commonName = <%= node[:fqdn] %> -emailAddress = postmaster@openstreetmap.org diff --git a/cookbooks/ssl/resources/certificate.rb b/cookbooks/ssl/resources/certificate.rb index facb59ad7..7348a6726 100644 --- a/cookbooks/ssl/resources/certificate.rb +++ b/cookbooks/ssl/resources/certificate.rb @@ -53,25 +53,19 @@ action :create do force_unlink true end else - template "/tmp/#{new_resource.certificate}.ssl.cnf" do - cookbook "ssl" - source "ssl.cnf.erb" - owner "root" - group "root" - mode 0o644 - variables :domains => Array(new_resource.domains) - not_if do - ::File.exist?("/etc/ssl/certs/#{new_resource.certificate}.pem") && ::File.exist?("/etc/ssl/private/#{new_resource.certificate}.key") - end - end + alt_names = new_resource.domains.collect { |domain| "DNS:#{domain}" } - execute "/etc/ssl/certs/#{new_resource.certificate}.pem" do - command "openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/#{new_resource.certificate}.key -out /etc/ssl/certs/#{new_resource.certificate}.pem -days 365 -nodes -config /tmp/#{new_resource.certificate}.ssl.cnf" - user "root" + openssl_x509_certificate "/etc/ssl/certs/#{new_resource.certificate}.pem" do + key_file "/etc/ssl/private/#{new_resource.certificate}.key" + owner "root" group "ssl-cert" - not_if do - ::File.exist?("/etc/ssl/certs/#{new_resource.certificate}.pem") && ::File.exist?("/etc/ssl/private/#{new_resource.certificate}.key") - end + mode 0o640 + org "OpenStreetMap" + email "operations@osmfoundation.org" + common_name new_resource.domains.first + subject_alt_name alt_names + extensions "keyUsage" => { "values" => %w[digitalSignature keyEncipherment] }, + "extendedKeyUsage" => { "values" => %w[serverAuth clientAuth] } end end end diff --git a/cookbooks/ssl/templates/default/ssl.cnf.erb b/cookbooks/ssl/templates/default/ssl.cnf.erb deleted file mode 100644 index 64c3c085d..000000000 --- a/cookbooks/ssl/templates/default/ssl.cnf.erb +++ /dev/null @@ -1,20 +0,0 @@ -[req] -prompt = no -distinguished_name = req_dn -x509_extensions = v3_req - -[req_dn] -organizationName = OpenStreetMap -commonName = <%= @domains.first %> -emailAddress = operations@osmfoundation.org - -[v3_req] -basicConstraints = CA:FALSE -keyUsage = digitalSignature, keyEncipherment -extendedKeyUsage = serverAuth, clientAuth -subjectAltName = @alt_names - -[alt_names] -<% @domains.each_with_index do |d, i| -%> -DNS.<%= i + 1 %> = <%= d %> -<% end -%> -- 2.43.2