Вопрос или проблема
Как 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 не может осуществить данную привязку и выдает ошибку о том, что порт занят.
Решение проблемы:
-
Определение работающего веб-сервера:
Для начала определите, какой веб-сервер запущен на вашем сервере. Это может быть Apache, Nginx или другой процесс, использующий порт 80. -
Остановка веб-сервера:
Чтобы корректно получить сертификат, вам нужно временно остановить существующий веб-сервер. В зависимости от используемого сервиса, выполните одну из следующих команд:- Для Apache:
sudo systemctl stop apache2
- Для Nginx:
sudo systemctl stop nginx
- Для Apache:
-
Запуск Certbot:
После остановки веб-сервера выполните команду для получения сертификата:sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m ваш_email@gmail.com -d mycomp.com
- Перезапуск веб-сервера:
По завершении работы Certbot и получения сертификата, не забудьте вернуть рабочий веб-сервер в исходное состояние, запустив его снова:- Для Apache:
sudo systemctl start apache2
- Для Nginx:
sudo systemctl start nginx
- Для Apache:
Альтернативные методы:
Если вы не хотите останавливать веб-сервер, вы можете рассмотреть использование метода валидации DNS вместо HTTP. Это позволяет обновить записи DNS для вашего домена и избежать конфликта с уже работающим веб-сервером. Команда будет выглядеть следующим образом:
sudo certbot certonly --manual --preferred-challenges dns -d mycomp.com
Этот метод требует создания TXT-записи в вашем DNS, что может занять несколько минут, пока изменения не вступят в силу.
Заключение:
Проблема с привязкой порта 80 решается либо остановкой текущего веб-сервера, либо использованием метода валидации DNS. Если у вас останутся посторонние вопросы или возникнут сложности, вы всегда можете обратиться за помощью в поддержке Certbot или на форумы сообщества. Удачи!