И вот мне всё же надоело обновлять сертификат руками и поэтому я случайно нашёл потрясающую инструкцию как починить.
Только не всё мне в ней понравилось поэтому давайте сделаем всё хорошо и красиво и не будем запускать crbot из под рута потому что это даже как-то неприлично.
Создадим пользователя и добавим nginx в группу этого пользователя!
# useradd -mU -s /bin/bash lets_encrypt # usermod -aG lets_encrypt nginx
Создадим хранилище для данных crbot!
# su lets_encrypt # cd /home/lets_encrypt/ # mkdir -p /home/lets_encrypt/certbot/{config,logs,webroot,work}
Теперь надо создать всякие полезные скрипты которые нам пригодятся в ближайшем будущем
# cd /home/lets_encrypt/certbot/ # touch generate.sh renew.sh renew-hook.sh # chmod u+x *sh
Теперь нужно заполнить эти файлы полезным содержимым.
# cat generate.sh -------------------------------------------------------- #!/bin/bash if [ -z "$1" ]; then echo "Please, enter domain as first argument" exit fi DOMAIN=$1 EMAIL="changeme@example.com" if [ $EMAIL = "changeme@example.com" ]; then echo "Please, change email" exit fi certbot certonly --webroot --agree-tos --no-eff-email \ --email $EMAIL \ --config-dir /home/lets_encrypt/certbot/config/ \ --work-dir /home/lets_encrypt/certbot/work/ \ --logs-dir /home/lets_encrypt/certbot/logs/ \ -w /home/lets_encrypt/certbot/webroot/ \ -d $DOMAIN
# cat renew.sh -------------------------------------------------------- #!/bin/bash EMAIL="changeme@example.com" if [ $EMAIL = "changeme@example.com" ]; then echo "Please, change email" exit fi certbot renew --noninteractive \ --email $EMAIL \ --config-dir /home/lets_encrypt/certbot/config/ \ --work-dir /home/lets_encrypt/certbot/work/ \ --logs-dir /home/lets_encrypt/certbot/logs/ \ --renew-hook /home/lets_encrypt/certbot/renew-hook.sh \ -w /home/lets_encrypt/certbot/webroot/
# cat renew-hook.sh -------------------------------------------------------- #!/bin/bash sudo service nginx reload
Редактируем cron
# crontab -e 20 3 * * * /home/lets_encrypt/certbot/renew.sh
Это все настройки что я хотел привнести в этот мир. Остальное берите в оригинальной инструкции.
Что же здесь собственно происходит?
Мне не нравится запускать что-нибудь из под рута поэтому мы создаем специального пользователя для certbot (клиент для Let’s Encrypt), создаем нужные ему для локальной работы директории и создаем три простых скрипта.
Для того чтобы сгенирировать сертификат в первый раз надо надо сделать там вские настройки в nginx’e, перезагрузить его и потом запустить из под нашего нового пользователя:
# ./generate.sh hshhhhh.name
И внимательно читать вывод консоли. Или не читать — зачем вам этот дурацкий SSL?
А если вам всё же не всё же понятно после этой, кхм, великолепной инструкции — задавайте вопросы в комментариях, подписывайтесь на RSS, делитесь этим постом в ваших социальных сетях!
2017.06.08 02:55