fusionpbx-install.sh/debian/resources/letsencrypt.sh

127 lines
4.3 KiB
Bash
Raw Normal View History

2017-02-02 21:57:24 +01:00
#!/bin/sh
2018-03-22 02:37:55 +01:00
# FusionPBX - Install
# Mark J Crane <markjcrane@fusionpbx.com>
# Copyright (C) 2018
# All Rights Reserved.
2017-03-04 20:53:41 +01:00
#move to script directory so all relative paths work
cd "$(dirname "$0")"
#includes
. ./config.sh
2018-03-21 18:30:31 +01:00
#remove dehyrdated letsencrypt script
#rm -R /etc/dehydrated/
#rm /usr/local/sbin/dehydrated
#rm -R /usr/src/dehydrated
#rm -R /usr/src/dns-01-manual
#rm -R /var/www/dehydrated
2018-03-21 18:20:07 +01:00
#request the domain name, email address and wild card domain
2017-02-02 23:31:00 +01:00
read -p 'Domain Name: ' domain_name
read -p 'Email Address: ' email_address
2018-03-22 02:26:05 +01:00
2018-03-21 18:20:07 +01:00
#get and install dehydrated
2018-03-21 18:00:29 +01:00
cd /usr/src && git clone https://github.com/lukas2511/dehydrated.git
cd /usr/src/dehydrated
cp dehydrated /usr/local/sbin
mkdir -p /var/www/dehydrated
mkdir -p /etc/dehydrated/certs
2017-02-02 22:34:35 +01:00
2018-07-25 07:41:15 +02:00
#wildcard detection
wilcard_domain=$(echo $domain_name | cut -c1-1)
if [ "$wilcard_domain" = "*" ]; then
wilcard_domain="true"
else
wilcard_domain="false"
fi
2018-03-22 02:30:40 +01:00
#remove the wildcard and period
2018-07-25 07:41:15 +02:00
if [ .$wilcard_domain = ."true" ]; then
2018-03-22 17:10:12 +01:00
domain_name=$(echo "$domain_name" | cut -c3-255)
fi
2018-03-22 02:30:40 +01:00
2018-03-21 18:00:29 +01:00
#manual dns hook
2018-07-25 07:41:15 +02:00
if [ .$wilcard_domain = ."true" ]; then
if [ ! -f /usr/local/etc/dehydrated/hook.sh]; then
cd /usr/src
git clone https://github.com/owhen/dns-01-manual.git
cd /usr/src/dns-01-manual/
cp hook.sh /etc/dehydrated/hook.sh
chmod 755 /etc/dehydrated/hook.sh
fi
fi
#update the dehydrated config
#sed "s#CONTACT_EMAIL=#CONTACT_EMAIL=$email_address" -i /etc/dehydrated/config
sed -i' ' -e s:'#CONTACT_EMAIL=":CONTACT_EMAIL=$email_address:' /etc/dehydrated/config
sed -i' ' -e s:'#WELLKNOWN="/var/www/dehydrated":WELLKNOWN="/usr/local/www/dehydrated":' /etc/dehydrated/config
#accept the terms
dehydrated --register --accept-terms --config /etc/dehydrated/config
#set the domain alias
domain_alias=$(echo "$domain_name" | head -n1 | cut -d " " -f1)
#add the domain name to domains.txt
if [ .$wilcard_domain = ."false" ]; then
echo "$domain_name" > /etc/dehydrated/domains.txt
fi
2017-03-11 20:40:29 +01:00
2018-03-27 23:36:42 +02:00
#copy config and hook.sh into /etc/dehydrated
cd /usr/src/dehydrated
cp docs/examples/config /etc/dehydrated
2018-03-27 23:43:59 +02:00
#cp docs/examples/hook.sh /etc/dehydrated
2018-03-27 23:36:42 +02:00
#make sure the nginx ssl directory exists
2018-03-21 18:00:29 +01:00
mkdir -p /etc/nginx/ssl
2017-02-02 23:08:15 +01:00
2018-03-27 23:36:42 +02:00
#accept the terms
2018-03-27 23:28:35 +02:00
dehydrated --register --accept-terms --config /etc/dehydrated/config
2017-02-02 21:57:24 +01:00
2018-07-25 07:41:15 +02:00
#request the certificates
if [ .$wilcard_domain = ."true" ]; then
2018-03-27 23:28:35 +02:00
dehydrated --cron --domain *.$domain_name --alias $domain_name --config /etc/dehydrated/config --out /etc/dehydrated/certs --challenge dns-01 --hook /etc/dehydrated/hook.sh
2018-03-21 18:50:04 +01:00
fi
2018-07-25 07:41:15 +02:00
if [ .$wilcard_domain = ."false" ]; then
2018-03-27 23:28:35 +02:00
dehydrated --cron --domain $domain_name --config /etc/dehydrated/config --config /etc/dehydrated/config --out /etc/dehydrated/certs --challenge dns-01 --hook /etc/dehydrated/hook.sh
2018-03-21 18:50:04 +01:00
fi
#update nginx config
2018-03-21 18:00:29 +01:00
sed "s@ssl_certificate /etc/ssl/certs/nginx.crt;@ssl_certificate /etc/dehydrated/certs/$domain_name/fullchain.pem;@g" -i /etc/nginx/sites-available/fusionpbx
sed "s@ssl_certificate_key /etc/ssl/private/nginx.key;@ssl_certificate_key /etc/dehydrated/certs/$domain_name/privkey.pem;@g" -i /etc/nginx/sites-available/fusionpbx
2017-02-02 22:34:35 +01:00
#read the config
2017-02-02 22:34:35 +01:00
/usr/sbin/nginx -t && /usr/sbin/nginx -s reload
2018-07-25 07:41:15 +02:00
#setup freeswitch tls
if [ .$switch_tls = ."true" ]; then
#make sure the freeswitch directory exists
mkdir -p /etc/freeswitch/tls
2018-03-22 08:27:00 +01:00
2018-07-25 07:41:15 +02:00
#make sure the freeswitch certificate directory is empty
rm /etc/freeswitch/tls/*
2018-03-22 17:10:12 +01:00
2018-07-25 07:41:15 +02:00
#combine the certs into all.pem
cat /etc/dehydrated/certs/$domain_name/fullchain.pem > /etc/freeswitch/tls/all.pem
cat /etc/dehydrated/certs/$domain_name/privkey.pem >> /etc/freeswitch/tls/all.pem
#cat /etc/dehydrated/certs/$domain_name/chain.pem >> /etc/freeswitch/tls/all.pem
2018-03-22 08:27:00 +01:00
2018-07-25 07:41:15 +02:00
#copy the certificates
cp /etc/dehydrated/certs/$domain_name/cert.pem /etc/freeswitch/tls
cp /etc/dehydrated/certs/$domain_name/chain.pem /etc/freeswitch/tls
cp /etc/dehydrated/certs/$domain_name/fullchain.pem /etc/freeswitch/tls
cp /etc/dehydrated/certs/$domain_name/privkey.pem /etc/freeswitch/tls
2018-03-22 08:27:00 +01:00
2018-07-25 07:41:15 +02:00
#add symbolic links
ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/agent.pem
ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/tls.pem
ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/wss.pem
ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/dtls-srtp.pem
2018-03-22 08:27:00 +01:00
2018-07-25 07:41:15 +02:00
#set the permissions
chown -R www-data:www-data /etc/freeswitch/tls
fi