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/