Как certbot привязывает порт? Не удалось привязать TCP порт 80, так как он уже используется другим процессом.

Вопрос или проблема

Как certbot привязывает порт? Не удалось привязать TCP порт 80, так как он уже используется другим процессом.

Я включил порты 80 и 443.

sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m **@**.com -d mycomp.com
Сохранение отладочного лога в /var/log/letsencrypt/letsencrypt.log
Запрос сертификата для mycomp.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Не удалось связать TCP порт 80, так как он уже используется другим процессом на
этой системе (таким как веб-сервер). Пожалуйста, остановите программу и
попробуйте снова.

Let’s Debug показывает

ANotWorking
ОШИБКА
mycomp.com имеет запись A (IPv4) (*.***.***.***) но запрос к этому адресу через порт 80 не удался. Ваш веб-сервер должен иметь как минимум один рабочий IPv4 или IPv6 адрес.

Я не понимаю, что не так с портом 80.
Как это исправить?

Как говорится в ошибке, порт 80 “уже используется другим процессом на
этой системе (таким как веб-сервер)”. Вы сказали certbot работать в режиме standalone, а не сотрудничать с существующим веб-сервером, который он бы использовал, если бы вы спросили.

Либо измените certbot --standalone, либо остановите веб-сервер, который у вас запущен.

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

Остановите веб-сервер:
sudo systemctl stop apache2
//или если вы используете Nginx
sudo systemctl stop nginx

Запустите Certbot для получения сертификата:
sudo certbot certonly –standalone -d yourdomain.com

Перезапустите веб-сервер:
sudo systemctl start apache2
//или если вы используете Nginx
sudo systemctl start nginx

Для информации, я только что успешно выполнил это на сервере Windows 2012 R2.
Сначала у меня были ошибки, и после того, как я остановил веб-сервер, все сработало 🙂

Хотя в инструкциях certbot это не было очевидно, это имело смысл, так как работающий веб-сервер занимал порт 80, который certbot пытается использовать при создании сертификатов для ваших доменов.

Хороших выходных, Оле

Ответ или решение

Чтобы понять, почему Certbot не может привязаться к порту 80, необходимо рассмотреть процесс, связанный с получением SSL-сертификата. При запуске команды certbot certonly --standalone Certbot пытается создать временный веб-сервер, который будет прослушивать порт 80 для выполнения валидации домена через HTTP. Однако, если на этом порту уже запущен другой процесс (чаще всего это веб-сервер, такой как Apache или Nginx), Certbot не может осуществить данную привязку и выдает ошибку о том, что порт занят.

Решение проблемы:

  1. Определение работающего веб-сервера:
    Для начала определите, какой веб-сервер запущен на вашем сервере. Это может быть Apache, Nginx или другой процесс, использующий порт 80.

  2. Остановка веб-сервера:
    Чтобы корректно получить сертификат, вам нужно временно остановить существующий веб-сервер. В зависимости от используемого сервиса, выполните одну из следующих команд:

    • Для Apache:
      sudo systemctl stop apache2
    • Для Nginx:
      sudo systemctl stop nginx
  3. Запуск Certbot:
    После остановки веб-сервера выполните команду для получения сертификата:

    sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m ваш_email@gmail.com -d mycomp.com
  4. Перезапуск веб-сервера:
    По завершении работы Certbot и получения сертификата, не забудьте вернуть рабочий веб-сервер в исходное состояние, запустив его снова:

    • Для Apache:
      sudo systemctl start apache2
    • Для Nginx:
      sudo systemctl start nginx

Альтернативные методы:

Если вы не хотите останавливать веб-сервер, вы можете рассмотреть использование метода валидации DNS вместо HTTP. Это позволяет обновить записи DNS для вашего домена и избежать конфликта с уже работающим веб-сервером. Команда будет выглядеть следующим образом:

sudo certbot certonly --manual --preferred-challenges dns -d mycomp.com

Этот метод требует создания TXT-записи в вашем DNS, что может занять несколько минут, пока изменения не вступят в силу.

Заключение:

Проблема с привязкой порта 80 решается либо остановкой текущего веб-сервера, либо использованием метода валидации DNS. Если у вас останутся посторонние вопросы или возникнут сложности, вы всегда можете обратиться за помощью в поддержке Certbot или на форумы сообщества. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...