Способы устранения частых ошибок при работе с Let’s Encrypt/Certbot

Если вы управляете Linux-сервером, скорее всего, вам известно, что Let’s Encrypt — это бесплатный, автоматизированный и открытый центр сертификации (CA), который предоставляет TLS-сертификаты с проверкой домена, что позволяет активировать HTTPS на вашем сайте или веб-приложении без дополнительных расходов.

Ранее мы рассматривали корректный процесс получения и установки TLS-сертификата от Let’s Encrypt.

  • Как настроить HTTPS на Nginx с использованием Let’s Encrypt в Ubuntu
  • Как настроить HTTPS на Apache с использованием Let’s Encrypt на Ubuntu

Однако, как это часто бывает в Linux, могут возникнуть непредвиденные ошибки, и в данной статье будут даны рекомендации по их устранению.

Установите самую актуальную версию Certbot.

Всегда рекомендуется пользоваться самой актуальной версией Certbot. При возникновении ошибки она предоставляет более подробные сообщения, что облегчает процесс поиска решения. В некоторых случаях обновление до последней версии Certbot может само по себе устранить проблему.

Вы можете установить самую последнюю версию с помощью Snap.

sudo snap install certbot --classic

После этого используйте исполняемый файл /snap/bin/certbot вместо обычного /usr/bin/certbot.

sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp - d example.com

Вы можете установить символическую ссылку с помощью следующей команды, чтобы при вводе

certbot

в терминале автоматически запускалась версия, установленная через Snap.

sudo ln - sf /snap/bin/certbot /usr/bin/certbot

Чтобы узнать больше о Snap-пакетах и о том, как активировать Snap на разных дистрибутивах Linux, ознакомьтесь с данной статьей.

  • Как установить и применять Snap-пакеты в Linux
Читайте также:  Как выбрать лучшие VPS сервера для создания надежного VPN-соединения

  • Применяйте плагин Webroot.
  • Вы можете заменить плагины Apache или Nginx на плагин Webroot для получения сертификатов TLS. Я заметил, что он работает более стабильно и реже вызывает ошибки.

    Вместо того, чтобы выполнять данную команду:

    sudo /snap/bin/certbot --nginx --agree-tos --redirect --hsts --staple-ocsp - d example.com

    sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp - d example.com - w /var/www/html

    Флаг — w определяет веб-каталог вашего сайта или веб-приложения. В вышеуказанном примере указан путь /var/www/html/. Чтобы узнать точное местоположение, обратитесь к конфигурационному файлу вашего веб-сервера.

    В Apache должна присутствовать строка, аналогичная следующей:

    DocumentRoot "/var/www/nextcloud"

    В конфигурации Nginx должна присутствовать строка подобного вида:

    root /var/www/nextcloud/;

  • Прерывание соединения (возможно, причина кроется в файрволе)
  • Некоторые пользователи могут натолкнуться на следующую проблему:

    IMPORTANT NOTES: - The following errors were reported by the server: Domain: mail.example.com Type: connection Detail: Fetching http://mail.example.com/.well-known/acme-challenge/8aNsZkYzpbFXyWUAECaJEj1eBsVhPOokDYeNTgw4nq8: Timeout during connect (likely firewall problem) To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. Additionally, please check that your computer has a publicly routable IP address and that no firewalls are preventing the server from communicating with the client. If you're using the webroot plugin, you should also verify that you are serving files from the webroot path you provided. Can't open /etc/letsencrypt/renewal/mail.example.com.conf: No such file or directory.

    Это может быть обусловлено:

    • Ошибка в записи DNS A. Вы указали неверный IP-адрес для mail.example.com? Не следует использовать частный IP-адрес в записи DNS A. Для этого требуется указать публичный IP-адрес.
    • Запись DNS еще не была распространена. Вы можете проверить её распространение, посетив https://dnsmap.io.
    • TCP-порты 80 и 443 не были открыты в вашем брандмауэре. Чтобы Certbot мог выполнить проверку HTTP-01, ему нужен доступ к определенной веб-странице, поэтому важно открыть эти порты. Если вы работаете с UFW, ознакомьтесь с этим руководством: Как использовать брандмауэр UFW в Debian, Ubuntu, Linux Mint.
    Читайте также:  Как использовать утилиту fsck для проверки дисков в Linux

  • Настройки Nginx не применяются.
  • Некоторые пользователи могут оказаться в ситуации, когда возникает эта ошибка:

    Подсказка: Центр сертификации не смог подтвердить временные изменения конфигурации nginx, внесенные Certbot. Убедитесь, что указанные домены указывают на этот сервер nginx и что он доступен из интернета.

    Это говорит о том, что файл вашего виртуального хоста не был загружен в Nginx. Нужно выполнить перезагрузку Nginx.

    sudo systemctl restart nginx

    Иногда в конфигурационном файле Nginx могут возникнуть ошибки. Чтобы их проверить, выполните следующую команду.

    sudo nginx - t

    Кроме того, не забудьте просмотреть журнал Nginx.

    sudo journalctl - eu nginx

    Однажды я столкнулся с проблемой из-за того, что не указал директиву server_name в конфигурационном файле Nginx. В результате Nginx не смог определить, какой конфигурационный файл применять для запроса Certbot.

  • Ошибка Unauthorized (404 — не найдено)
  • Пример уведомления об ошибке:

    ВАЖНЫЕ ЗАМЕЧАНИЯ: - Сервер сообщил об ошибках: Домен: onlyoffice. linux16.ru Тип: unauthorized Подробности: 2606:4700:20::681a:c47: Неверный ответ от https://onlyoffice. linux16.ru/.well-known/acme-challenge/piqJOZM3CYsCGAmT-ZdfKI2XrvteQQEyKgtIHM6DNo4: 526 Чтобы исправить эти ошибки, убедитесь, что имя домена было введено правильно, и что записи DNS A/AAAA для этого домена содержат правильный IP-адрес.

    Как правило, чтобы понять причину этой ошибки, необходимо изучить журнал ошибок вашего веб-сервера. Например, я столкнулся с этой проблемой, когда пытался получить сертификат TLS для OnlyOffice. В журнале ошибок веб-сервера Nginx можно было увидеть следующие записи.

    Читайте также:  Топовые дистрибутивы Linux 2017 года для разных нужд и пользователей

    022/12/01 04:53:23 [error] 26124#26124: *14 open() "/var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA" не удалось (2: Нет такого файла или каталога), клиент: 127.0.0.1, сервер: webmail.sk8deal.com, запрос: "GET /.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA HTTP/1.1", хост: "onlyoffice. linux16.ru", источник: "http://onlyoffice. linux16.ru/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA"

    По этой причине мне необходимо организовать каталог для протокола ACME от Let’s Encrypt.

    sudo mkdir - p /var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/

    Смените собственника на www-data.

    sudo chown www-data:www-data /var/www/onlyoffice/documentserver/letsencrypt/ - R

    Попробуйте сгенерировать файл под учетной записью пользователя www-data.

    sudo - u www-data touch /var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA

    Если все прошло успешно, вы можете повторно запустить certbot для получения TLS-сертификата. В случае появления ошибки «доступ запрещен» необходимо предоставить права пользователю www-data.

    sudo apt install acl sudo setfacl - R - m u:www-data:rxx /var/www/onlyoffice/

  • Тестовый запуск
  • Если в течение определенного времени было слишком много неудачных попыток получить TLS-сертификат от Let’s Encrypt, то, вероятно, дальнейшие запросы к серверу Let’s Encrypt CA будут отклонены. Чтобы этого избежать, рекомендуется использовать флаг —dry-run для проверки.

    sudo /snap/bin/certbot certonly --dry-run --webroot --agree-tos --redirect --hsts --staple-ocsp - d example.com - w /var/www/html

    Тестовый режим функционирует исключительно с подкомандой certonly, поэтому их необходимо применять совместно. После устранения ошибки и успешного завершения тестирования, вы сможете получить TLS-сертификат.

    sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp - d example.com - w /var/www/html

    Заключение

    Надеюсь, этот гид был полезен для работы с certbot. Если вам понравилась статья, подписывайтесь на нашу бесплатную рассылку, чтобы получать больше полезных советов и рекомендаций.