Skip to content

Let's Enctypt без nginx

Как получить публичный TLS сертификат на зарегистрированный DNS домен? Допустим у вас есть доменное имя, сервер с Ubuntu и не установлен веб сервер. Статья с сервером nginx

Установим Let's Encrypt

Требования:

  • доступный порт http и https из Интернета
  • DNS запись домена указывает на публичный адрес вашего сервера

Установим пакет

apt update && apt upgrade -y
apt install certbot

Выпустим сертификат

# certbot certonly --standalone --cert-name smarthost.example.com -d smarthost.example.com

Certificate is saved at: /etc/letsencrypt/live/smarthost.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/smarthost.example.com/privkey.pem

Плагин standalone запускает временный веб сервер для подтверждения домена. Затем сервер проверки Let's Encrypt делает HTTP-запрос, чтобы проверить, что DNS для каждого запрошенного домена разрешается на сервер, на котором запущен certbot. Важно чтобы порт 80 был доступен из Интернета.

Посмотрим список сертификатов

certbot certificates

Проверим файлы сертифкатов на сервере

ls -la /etc/letsencrypt/live/site.company.com/

где:

  • fullchain.pem - цепочка сертификатов включая домен
  • privkey.pem - закрытый ключ

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

certbot renew --dry-run

Сервис запуска certbot

Установка создала сервис на обнволение сертификата /lib/systemd/system/certbot.service:

[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://certbot.eff.org/docs
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true

Расписание на регулярное обновлений сертфиката

Установка создала задание на регулярное обновление сертификата /usr/lib/systemd/system/certbot.timer:

[Unit]
Description=Run certbot twice daily

[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true

[Install]
WantedBy=timers.target

Запустим задачу обновления сертификата

systemctl start certbot.timer

Посмотрим статус задачи

systemctl list-timers

Включим сервис на авто запуск

systemctl enable certbot.service
systemctl enable certbot.timer

(опционально) Добавим доступ простым аккаунтам к сертификатам и ключам

Поскольку по умолчанию доступ к приватному ключу разрешён только root, то при использовании программ под другим пользователем доступ будет запрещён. Для этого установим команду acl и разрешим доступ пользователю username:

apt install acl
setfacl -R -d -m  u:username:rX /etc/letsencrypt/
setfacl -R -m  u:username:rX /etc/letsencrypt/
getfacl /etc/letsencrypt/

(опционально) Дополнительные команды при обновелнии сертификата

Если вам нужно при перевыпуске сертифката производить какие-то команды, например, перезапуск веб сервера, то можно добавить их в хук настройки certbot /etc/letsencrypt/cli.ini:

deploy-hook = "service nginx restart"

(опционально) Цепочка доверия

Не забудьте проверить, что центр сертификации Let's Encrypt находится в доверенных на клиенте. Вы можете скачать PEM файлы для импорта в доверенное хранилище сертификатов с сайта https://letsencrypt.org/certificates/ .

wget --quiet https://letsencrypt.org/certs/isrgrootx1.pem -O /etc/swanctl/x509ca/isrgrootx1.pem
wget --quiet https://letsencrypt.org/certs/isrg-root-x2.pem -O /etc/swanctl/x509ca/isrg-root-x2.pem
wget --quiet https://letsencrypt.org/certs/2024/e5.pem -O /etc/swanctl/x509ca/e5.pem
wget --quiet https://letsencrypt.org/certs/2024/e6.pem -O /etc/swanctl/x509ca/e6.pem
wget --quiet https://letsencrypt.org/certs/2024/r10.pem -O /etc/swanctl/x509ca/r10.pem
wget --quiet https://letsencrypt.org/certs/2024/r11.pem -O /etc/swanctl/x509ca/r11.pem

Проверка Let's Encrypt

  • https://letsdebug.net/
  • https://unboundtest.com/
  • https://check-your-website.server-daten.de/

Источник 1