auto4certbot.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. function toSSL() {
  55. for ((dmn=0; dmn != ${#domains[@]}; dmn++))
  56. do
  57. eval local dreg="(" $(echo -e ${domains[$dmn]}) ")";
  58. ((valtrue++));
  59. cat $path_cert/${dreg[0]}/cert.pem > $path_ssl/private/${dreg[0]}.pem;
  60. cat $path_cert/${dreg[0]}/chain.pem >> $path_ssl/private/${dreg[0]}.pem;
  61. cat $path_cert/${dreg[0]}/fullchain.pem >> $path_ssl/private/${dreg[0]}.pem;
  62. cat $path_cert/${dreg[0]}/privkey.pem >> $path_ssl/private/${dreg[0]}.pem;
  63. #
  64. cp -f $path_ssl/private/${dreg[0]}.pem $path_ssl/certs/${dreg[0]}.pem
  65. cd $path_ssl/certs
  66. chmod 600 ${dreg[0]}.pem
  67. ln -sf ${dreg[0]}.pem `openssl x509 -noout -hash < ${dreg[0]}.pem`.0
  68. cd $path_ssl
  69. echo "$(date) - auto4certbot.sh: update certlist for ${domains[$dmn]}">> $log;
  70. done
  71. if [ $valtrue != 0 ];
  72. then
  73. :>/etc/ssl/crt-list.txt
  74. for ((icrt=0; icrt != ${#domains[@]}; icrt++))
  75. do
  76. echo "$path_ssl/${domains[$icrt]}.pem">>/etc/ssl/crt-list.txt
  77. done
  78. fi
  79. }
  80. case "$cmd" in
  81. ## create cert
  82. "--create" | "--create" )
  83. createCert;
  84. ;;
  85. ## update cert
  86. "--update" | "--update" )
  87. renew;
  88. ;;
  89. ## update cert force
  90. "--flist" | "--flist" )
  91. toSSL;
  92. ;;
  93. ## start defaults
  94. * )
  95. echo "please input pameters: auto4certbot.sh --create | --update | --flist";
  96. echo "auto4certbot.sh --create; create new certificate"
  97. echo "auto4certbot.sh --update; update certificates;"
  98. echo "auto4certbot.sh --flist; update certificates from ssl;"
  99. ;;
  100. esac