letsencrypt.sh 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/bin/sh
  2. #move to script directory so all relative paths work
  3. cd "$(dirname "$0")"
  4. #includes
  5. . ./config.sh
  6. . ./colors.sh
  7. . ./environment.sh
  8. #request the domain and email
  9. read -p 'Domain Name: ' domain_name
  10. read -p 'Email Address: ' email_address
  11. #domain_name=subdomain.domain.com
  12. #[email protected]
  13. #remove previous install
  14. rm -R /opt/letsencrypt
  15. rm -R /etc/letsencrypt
  16. #use php version 5 for arm
  17. if [ .$cpu_architecture = .'arm' ]; then
  18. php_version=5
  19. fi
  20. #enable fusionpbx nginx config
  21. cp nginx/fusionpbx /etc/nginx/sites-available/fusionpbx
  22. #prepare socket name
  23. if [ ."$php_version" = ."5" ]; then
  24. sed -i /etc/nginx/sites-available/fusionpbx -e 's#unix:.*;#unix:/var/run/php5-fpm.sock;#g'
  25. fi
  26. if [ ."$php_version" = ."7" ]; then
  27. sed -i /etc/nginx/sites-available/fusionpbx -e 's#unix:.*;#unix:/var/run/php/php7.0-fpm.sock;#g'
  28. fi
  29. ln -s /etc/nginx/sites-available/fusionpbx /etc/nginx/sites-enabled/fusionpbx
  30. #read the config
  31. /usr/sbin/nginx -t && /usr/sbin/nginx -s reload
  32. #install letsencrypt
  33. git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
  34. chmod 755 /opt/letsencrypt/certbot-auto
  35. /opt/letsencrypt/./certbot-auto
  36. mkdir -p /etc/letsencrypt/configs
  37. mkdir -p /var/www/letsencrypt/
  38. #cd $pwd
  39. #cd "$(dirname "$0")"
  40. #copy the domain conf
  41. cp letsencrypt/domain_name.conf /etc/letsencrypt/configs/$domain_name.conf
  42. #update the domain_name and email_address
  43. sed "s#{domain_name}#$domain_name#g" -i /etc/letsencrypt/configs/$domain_name.conf
  44. sed "s#{email_address}#$email_address#g" -i /etc/letsencrypt/configs/$domain_name.conf
  45. #letsencrypt
  46. #sed "s@#letsencrypt@location /.well-known/acme-challenge { root /var/www/letsencrypt; }@g" -i /etc/nginx/sites-available/fusionpbx
  47. #get the certs from letsencrypt
  48. cd /opt/letsencrypt && ./letsencrypt-auto --config /etc/letsencrypt/configs/$domain_name.conf certonly
  49. #update nginx config
  50. sed "s@ssl_certificate /etc/ssl/certs/nginx.crt;@ssl_certificate /etc/letsencrypt/live/$domain_name/fullchain.pem;@g" -i /etc/nginx/sites-available/fusionpbx
  51. sed "s@ssl_certificate_key /etc/ssl/private/nginx.key;@ssl_certificate_key /etc/letsencrypt/live/$domain_name/privkey.pem;@g" -i /etc/nginx/sites-available/fusionpbx
  52. #read the config
  53. /usr/sbin/nginx -t && /usr/sbin/nginx -s reload
  54. #combine the certs into all.pem
  55. cat /etc/letsencrypt/live/$domain_name/cert.pem > /etc/letsencrypt/live/$domain_name/all.pem
  56. cat /etc/letsencrypt/live/$domain_name/privkey.pem >> /etc/letsencrypt/live/$domain_name/all.pem
  57. cat /etc/letsencrypt/live/$domain_name/chain.pem >> /etc/letsencrypt/live/$domain_name/all.pem
  58. #copy the certs to the switch tls directory
  59. mkdir -p /etc/freeswitch/tls
  60. cp /etc/letsencrypt/live/$domain_name/*.pem /etc/freeswitch/tls
  61. cp /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/wss.pem
  62. chown -R www-data:www-data /etc/freeswitch