diff --git a/recipes/default.rb b/recipes/default.rb index d5624f5870d6828c8ce88f77ce3dbefba9557334..d2bb2b08c05a033a69d2a1fea881904000ed729a 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -238,19 +238,40 @@ end ### Setup Apache Environment ### ################################ -# copy ssl key data -template '/etc/apache2/ssl/sslKey.key' do - source 'sslKey.key' +# create ssl certificate +# Instructions are from here: https://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate/43666288#43666288 +template '/etc/apache2/ssl/v3.ext' do + source 'v3.ext' owner 'vagrant' group data_bag['groupId'] end -template '/etc/apache2/ssl/sslKey.crt' do - source 'sslKey.crt' +template '/etc/apache2/ssl/create_certificate_for_domain.sh' do + source 'create_certificate_for_domain.sh' owner 'vagrant' group data_bag['groupId'] end +# not needed (globally used, but maybe someone else needs this) +# template 'create_root_cert_and_key.sh' do +# source 'create_root_cert_and_key.sh' +# owner 'vagrant' +# group data_bag['groupId'] +# end + +bash 'Create Certificate' do + cwd '/etc/apache2/ssl/' + + user 'vagrant' + group data_bag['groupId'] + + code <<-EOF + chmod 755 create_certificate_for_domain.sh + ./create_certificate_for_domain.sh #{node['typo3_site']['hostname']} + EOF + action :run +end + # create vHost directory directory "#{node['typo3_site']['webroot']}/#{node['typo3_site']['hostname']}" do owner 'vagrant' diff --git a/templates/default/create_certificate_for_domain.sh b/templates/default/create_certificate_for_domain.sh new file mode 100755 index 0000000000000000000000000000000000000000..4850b29b0e1a15e718da1665c86e56116ad7c91a --- /dev/null +++ b/templates/default/create_certificate_for_domain.sh @@ -0,0 +1,38 @@ +if [ -z "$1" ] +then + echo "Please supply a subdomain to create a certificate for"; + echo "e.g. www.mysite.com" + exit; +fi + +# Create a new private key if one doesnt exist, or use the xeisting one if it does +if [ -f device.key ]; then + KEY_OPT="-key" +else + KEY_OPT="-keyout" +fi + +DOMAIN=$1 +COMMON_NAME=${2:-*.$1} +SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME" +NUM_OF_DAYS=999 +openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr +cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext +openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext + +# move output files to final filenames +mv device.csr $DOMAIN.csr +cp device.crt $DOMAIN.crt + +# remove temp file +rm -f device.crt; + +echo +echo "###########################################################################" +echo Done! +echo "###########################################################################" +echo "To use these files on your server, simply copy both $DOMAIN.csr and" +echo "device.key to your webserver, and use like so (if Apache, for example)" +echo +echo " SSLCertificateFile /path_to_your_files/$DOMAIN.crt" +echo " SSLCertificateKeyFile /path_to_your_files/device.key" diff --git a/templates/default/create_root_cert_and_key.sh b/templates/default/create_root_cert_and_key.sh new file mode 100755 index 0000000000000000000000000000000000000000..e03da1638eca33af981c7034ec517b741bba8ac2 --- /dev/null +++ b/templates/default/create_root_cert_and_key.sh @@ -0,0 +1,2 @@ +openssl genrsa -out rootCA.key 2048 +openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem diff --git a/templates/default/sslKey.crt b/templates/default/sslKey.crt deleted file mode 100644 index d39f5b6b4db579f629af6a8fb56e8904cafb83b4..0000000000000000000000000000000000000000 --- a/templates/default/sslKey.crt +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDfzCCAmegAwIBAgIJAORC8MQ0C9DzMA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNV -BAYTAkRFMRAwDgYDVQQIDAdCYXZhcmlhMQ8wDQYDVQQHDAZNdW5pY2gxJDAiBgNV -BAoMG3NnYWxpbnNraSBJbnRlcm5ldCBTZXJ2aWNlczAeFw0xNTA0MjExNzQzMTda -Fw0xNjA0MjAxNzQzMTdaMFYxCzAJBgNVBAYTAkRFMRAwDgYDVQQIDAdCYXZhcmlh -MQ8wDQYDVQQHDAZNdW5pY2gxJDAiBgNVBAoMG3NnYWxpbnNraSBJbnRlcm5ldCBT -ZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSgEUitUshZ -hpIcKxI5IBSaHx8UEelHuJLCqe2uOPS5LwGLfwftwwJkPYCmQgDRVN3EarZU7ssq -kkeQ3LoAS6GzZ/R8XKVm2bs8qme9w7K13/Nntv2k3qhtNVfbbB9l3xDzilYRhNY/ -BZ1RxpjSMRKenzkv7KfdDLVQ2xX/YtLjS2qEGTE09oop7m75H7j2PpvnUMz9exnQ -g1R91177iBhhWPa/HA0+QUirqQ0cica6YgHx4imGmJ8fXCUDpn5kRxqPIl5+Gwrw -Y/+zUzFcwamz9XJJo2inWRZHz+uHQWHt00g8RPZdJMClPLvcf/a8hXM8Q0V0z+xk -/RAU9knwS6kCAwEAAaNQME4wHQYDVR0OBBYEFOkJIQ36tTSNGCnwFI6baqxtDKXH -MB8GA1UdIwQYMBaAFOkJIQ36tTSNGCnwFI6baqxtDKXHMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQELBQADggEBAAhRxgilKKFKWg9jOSu+7qDmxVdnlK17rYNVnDoU -L6emvKOEHR7eIpLVx/4wwPKfCe8SaKzTQ8EP/y0bAnuv2qrNOiQ/wv3kJa3Miu9x -47E//+13AY22ADdB0lXDKS6RveJaL8YfgYtjV1aKa3kvnbBpeDD5Lh60n55tXod5 -DVU0WhOxH62d1EgllYP4DN7Pzl8QrSDEREHewj+5gSAfbYqOHr6e865iXZh3lpdi -C+BYNsvTHWnMC7AxqeEDRpfxJ9paYhgjVU7mNyjhDuvict+bXQ/iqKS/h2tN24fw -oSPkeMBC4ZxhmYkM+D06FAGBvjGVm9tr5m8sJ9FIkoCWQWY= ------END CERTIFICATE----- \ No newline at end of file diff --git a/templates/default/sslKey.key b/templates/default/sslKey.key deleted file mode 100644 index fc717d389f722cfafdbf04f68234d7d97a6cc567..0000000000000000000000000000000000000000 --- a/templates/default/sslKey.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA1KARSK1SyFmGkhwrEjkgFJofHxQR6Ue4ksKp7a449LkvAYt/ -B+3DAmQ9gKZCANFU3cRqtlTuyyqSR5DcugBLobNn9HxcpWbZuzyqZ73DsrXf82e2 -/aTeqG01V9tsH2XfEPOKVhGE1j8FnVHGmNIxEp6fOS/sp90MtVDbFf9i0uNLaoQZ -MTT2iinubvkfuPY+m+dQzP17GdCDVH3XXvuIGGFY9r8cDT5BSKupDRyJxrpiAfHi -KYaYnx9cJQOmfmRHGo8iXn4bCvBj/7NTMVzBqbP1ckmjaKdZFkfP64dBYe3TSDxE -9l0kwKU8u9x/9ryFczxDRXTP7GT9EBT2SfBLqQIDAQABAoIBADL6gcpcDAoPNO2Z -JVaELcXiwe1woW6+DGnblGRxLiS2tad4K6faALR1Fi3fLtoFVoSpUDCRIoPBnDre -Z52M7pVBb341xvy9MRzsSar/24jghGZWipA71EqrjGuZJ05L3XSx/4vtPV0k1RLI -BYakdrGRKHnMnMAOhrp+PVkD10zaVFuAbiKZKc5Qg5m+KD7785VMY5bBfqZwh66w -igeqFw0ZU6MZtaVGKeJzxWJGZxW5vbvjJGb/doLxMHYqzn4tjpFopXc0peOk0GiO -0A76zJVMWCOuQElui4amXC6EmD61GySub3fiBA1NEcptcIu6HVQqGi1dSb1aRbyV -oeqvRZECgYEA7ADxtY/WqafJadeIVnUkPZFSoyx4Q9X0W4/B2p56e22phJfU2CMZ -48/Fss79Q80nSKQNlRWmm8dMtQ5m+WqTVhL63OYtl0wb93/DGejEfqyt8oWboWmp -xqfSnFNOdTzH1GX6qAv/fWhU5oJ9PQ8EZCAuUgockwhcqEk+VCoPu50CgYEA5qQI -J8nZhzw9ZKu+oXXump/NR4FBEzpLItg7hw2x3Zyef9sfGuxxPuG2PpyvkV+RHsgm -3dDNTvc042mmMkAdLVPnpAyBw7hmMI32X0fMfEUzBQ7zxY6X09/OB5Mw8s060c6A -LDeEnAhygAnHWljTVlnj4u+YLubNUbdSeo/RcH0CgYEAyBU81xsteQRhRDSQyAvk -P7ZXAzQOeiSIWKAWT8yQNtiQIXO/5cZMitF54NCP882YgoNjaIPEjsl3BQFC2C48 -33qT6HfVKzJBe6F7vRmUjXjEuJoBieVVJLDfY91U5Rw0pqQW0CXr41xyrkLu/rce -l+yYmMEt3JH4TExcZWqLkBkCgYBvl3vurGYYXZgixkoU2veYTqtG5o3y3KiP8mlS -3dhqLiYuHHn/T9k3IIRJ5Qu5XbDcYOEVP7qmc0teoLZt58F2NfuEzxxV8zlWUsma -riWNFvopf2OI+YYSWF3aImhzgcLs0moHetEpoZisxI508zdFt3ZgTaanQrqix/0b -GcyvDQKBgQC3R9KNQygh/a6Bw/SHRAVa06WLgxF5WP905XWhmwZeFKsjX4dbef5a -3/hpnutUKdUxZ5Tvx9dQAxOQpfKlltbjy0VFDi5i61268Q63y9ON3UPUuduVb7Y3 -EZmYqUTDz8VWDrxp6U/r3gJXxvNCkYf3EmEUNk575QhVZeLiUJXgPA== ------END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/templates/default/v3.ext b/templates/default/v3.ext new file mode 100644 index 0000000000000000000000000000000000000000..7515c66d72d23a6bbbda54fb7de0a4a6b4ab57b5 --- /dev/null +++ b/templates/default/v3.ext @@ -0,0 +1,7 @@ +authorityKeyIdentifier=keyid,issuer +basicConstraints=CA:FALSE +keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment +subjectAltName = @alt_names + +[alt_names] +DNS.1 = %%DOMAIN%% diff --git a/templates/default/vHost-xenial.conf.erb b/templates/default/vHost-xenial.conf.erb index bd094d24844b9f0b72d93fc492a7c4739363e796..333c52c2e0cbd985c58a7b7b07aaf2645b99c255 100644 --- a/templates/default/vHost-xenial.conf.erb +++ b/templates/default/vHost-xenial.conf.erb @@ -40,8 +40,8 @@ # SSLCertificateFile directive is needed. #SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key - SSLCertificateFile /etc/apache2/ssl/sslKey.crt - SSLCertificateKeyFile /etc/apache2/ssl/sslKey.key + SSLCertificateFile /etc/apache2/ssl/<%= @params[:server_name] %>.crt + SSLCertificateKeyFile /etc/apache2/ssl/device.key # HSTS (mod_headers is required) (15768000 seconds = 6 months) Header always set Strict-Transport-Security "max-age=15768000" diff --git a/templates/default/vHost.conf.erb b/templates/default/vHost.conf.erb index abcbfa79a48105b077286b12785c59b4f54d9796..bf7b020b18d587e6e5e99b4639adfb4ed14562f6 100644 --- a/templates/default/vHost.conf.erb +++ b/templates/default/vHost.conf.erb @@ -37,8 +37,8 @@ # SSLCertificateFile directive is needed. #SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key - SSLCertificateFile /etc/apache2/ssl/sslKey.crt - SSLCertificateKeyFile /etc/apache2/ssl/sslKey.key + SSLCertificateFile /etc/apache2/ssl/<%= @params[:server_name] %>.crt + SSLCertificateKeyFile /etc/apache2/ssl/device.key # HSTS (mod_headers is required) (15768000 seconds = 6 months) Header always set Strict-Transport-Security "max-age=15768000"