Перейти к основному содержанию

Let's Encrypt — настройка certbot в Debian

let's encrypt

Установим и настроим certbot для получения и обновления SSL сертификатов Let's Encrypt. Операционная система Debian, веб-сервер Nginx. Инструкция подходит для Ubuntu.

Веб сервер работает, сайт, для которого требуется выпустить SSL сертификат, открывается по HTTP.

Let’s Encrypt — центр сертификации, начавший работу в бета-режиме с 3 декабря 2015 года, предоставляющий бесплатные криптографические сертификаты X.509 для TLS-шифрования (HTTPS). Процесс выдачи сертификатов полностью автоматизирован. https://letsencrypt.org/

Работаем в sudo.

Установка certbot

Устанавливаем пакет для certbot:

apt-get install certbot

ssl

Устанавливаем пакет для nginx:

apt-get install python3-certbot-nginx

ssl

Запускаем:

certbot run --nginx

Указываем e-mail администратора сертификатов Let's Encrypt. Принимаем лицензионное соглашение и отвечаем на вопросы.

ssl

Скрипт выводит список доменов, которые он нашёл в Nginx. Указываем номер домена, для которого требуется сертификат. В данном случае пишем "1". Enter.

ssl

Скрипт отработал, сгенерировал сертификаты (сроком на 3 месяца) и изменил конфигурационный файл сайта в nginx:

server {
  server_name internet-lab.ru;
  server_tokens off;
  proxy_set_header X-Forwarded-For $remote_addr;
  location / {
    ...
  }
  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/internet-lab.ru/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/internet-lab.ru/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
  if ($host = internet-lab.ru) {
    return 301 https://$host$request_uri;
  } # managed by Certbot
  listen 80;
  server_name internet-lab.ru;
  return 404; # managed by Certbot
}

Изменённые ботом строки подписаны:

# managed by Certbot

Перезапускаем Nginx:

service nginx restart

Проверяем работу сайта по HTTPS:

ssl

Сайт работает.

Автоматическое обновление сертификатов

Срок действия SSL сертификатов Let's Encrypt — 3 месяца. Настроим автоматическое обновление.

certbot renew

ssl

Ошибок нет, наш сертификат не требует обновления. Проверим принудительное обновление:

certbot renew --force-renewal

ssl

Сертификат успешно обновляется. Certbot разрешает обновлять сертификат не чаще 5 раз в неделю. Если превысите лимит, то нужно ждать неделю.

Создаём сервис:

cd /etc/systemd/system/
vim certbot-renewal.service

Содержимое:

[Unit]
Description=Certbot Renewal
[Service]
ExecStart=/usr/bin/certbot renew --force-renewal --post-hook "systemctl reload nginx.service"

Обращаю внимание на опцию --post-hook, с помощью этой опции мы будем обновлять конфигурационный файл nginx после перевыпуска сертификата.

ssl

Создаём таймер.

vim certbot-renewal.timer

Содержимое:

[Unit]
Description=Timer for Certbot Renewal
[Timer]
OnBootSec=300
OnUnitActiveSec=1w
[Install]
WantedBy=multi-user.target

ssl

Включим таймер:

systemctl start certbot-renewal.timer

Автоматическое включение таймера:

systemctl enable certbot-renewal.timer

Статус таймера:

systemctl status certbot-renewal.timer

ssl

Последний запуск 49 секунд назад. Следующий через неделю.

Теги

 

Похожие материалы

Let's Encrypt — настройка certbot в Ubuntu 22

Установим и настроим certbot для получения и обновления SSL сертификатов Let's Encrypt. Операционная система Ubuntu 22.04.4, веб-сервер Nginx. Настраивать будем на примере развёрнутого SeaFile.

Теги