И вот мне всё же надоело обновлять сертификат руками и поэтому я случайно нашёл потрясающую инструкцию как починить.
Только не всё мне в ней понравилось поэтому давайте сделаем всё хорошо и красиво и не будем запускать 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