auto4certbot.sh 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. #
  3. # необходимы для работы: nginx,certbot
  4. # create new cert
  5. path_ssl="/etc/ssl";
  6. path_cert="/etc/letsencrypt/live";
  7. source "/etc/scripts/certbot4nginx/auto4certbot.conf";
  8. log="/var/log/syslog";
  9. #
  10. cmd=$1;
  11. #
  12. function createCert() {
  13. for ((dmn=0; dmn != ${#domains[@]}; dmn++))
  14. do
  15. eval local dreg="(" $(echo -e ${domains[$dmn]}) ")";
  16. certbot certonly --webroot -w $webcrt -d ${dreg[0]}
  17. done
  18. }
  19. function renew() {
  20. certbot renew;
  21. valtrue=0;
  22. rdate=$(date +%Y-%m-%d);
  23. rtime=$(date +%H:%M);
  24. for ((dmn=0; dmn != ${#domains[@]}; dmn++))
  25. do
  26. eval local dreg="(" $(echo -e ${domains[$dmn]}) ")";
  27. keydate=$(ls -l --time-style=long-iso $path_cert/${dreg[0]}/cert.pem |awk {'print$6'});
  28. keytime=$(ls -l --time-style=long-iso $path_cert/${dreg[0]}/cert.pem |awk {'print$7'});
  29. if [ "$keydate" = "$rdate" ] && [ "$keytime" = "$rtime" ];
  30. then
  31. ((valtrue++));
  32. cat $path_cert/${dreg[0]}/cert.pem > $path_ssl/private/${dreg[0]}.pem;
  33. cat $path_cert/${dreg[0]}/chain.pem >> $path_ssl/private/${dreg[0]}.pem;
  34. cat $path_cert/${dreg[0]}/fullchain.pem >> $path_ssl/private/${dreg[0]}.pem;
  35. cat $path_cert/${dreg[0]}/privkey.pem >> $path_ssl/private/${dreg[0]}.pem;
  36. #
  37. cp -f $path_ssl/private/${dreg[0]}.pem $path_ssl/certs/${dreg[0]}.pem
  38. cd $path_ssl/certs
  39. chmod 600 ${dreg[0]}.pem
  40. ln -sf ${dreg[0]}.pem `openssl x509 -noout -hash < ${dreg[0]}.pem`.0
  41. cd $path_ssl
  42. echo "$(date) - auto4certbot.sh: update cert for ${domains[$dmn]}">> $log;
  43. fi
  44. done
  45. if [ $valtrue != 0 ];
  46. then
  47. :>/etc/ssl/crt-list.txt
  48. for ((icrt=0; icrt != ${#domains[@]}; icrt++))
  49. do
  50. echo "$path_ssl/${domains[$icrt]}.pem">>/etc/ssl/crt-list.txt
  51. done
  52. fi
  53. }
  54. case "$cmd" in
  55. ## create cert
  56. "--create" | "--create" )
  57. createCert;
  58. ;;
  59. ## update cert
  60. "--update" | "--update" )
  61. renew;
  62. ;;
  63. ## start defaults
  64. * )
  65. echo "please input pameters: auto4certbot.sh --create | --update";
  66. echo "auto4certbot.sh --create; create new certificate"
  67. echo "auto4certbot.sh --update; update certificates;"
  68. ;;
  69. esac