Проблемы с запуском Apache Certbot из-за порта, уже используемого для httpd.bin

Моя цель - запустить SSL на моем сервере для работы по HTTPS. Я пытаюсь запустить команду sudo certbot --apache для создания сертификата для моего сервера в рамках этих шагов https://certbot.eff.org/lets-encrypt/ubuntutrusty-apache .

У меня проблемы с этим, например, когда я запускаю команду, я получаю сообщение об ошибке

Error while running apache2ctl graceful.
httpd not running, trying to start
Action 'graceful' failed.
Address already in use: AH00072: make_sock: could not bind to address [::]:80

Когда я проверяю, что работает на порте 80, я вижу httpd.bin.

tcp6       0      0 :::80                   :::*                    LISTEN      1372/httpd.bin

Но httpd.bin, как говорят, не работает в сообщении об ошибке выше. Я пытался убить процесс, запущенный на порту 80, но не смог. Я также пытался найти PID родительского процесса Apache ( http://www.informit.com/articles/article.aspx?p=26130&seqNum=3 ), однако у меня нет / каталог acpache в usr / local.

Как мне продолжать убивать процесс? - Должен ли я сосредоточиться на том, чтобы убить этот процесс, или есть другой способ обойти эту проблему?

Другая сбивающая с толку вещь заключается в том, что когда я запускаю sudo service apache2 status, в результате apache2 не работает, но я не могу запустить это либо использовать порт 80 (не уверен, что в моем сценарии требуется Apache2.)

Любая помощь будет принята с благодарностью!

2
задан 10 May 2018 в 04:47

1 ответ

В настоящее время letsencrypt/certbot с --apache опция не работает, как она ожидается. Существуют некоторые изменения, которые должны быть применены к механизму CertBot, которые взаимодействуют с Apache, но они еще не применяются. Я не мог, нашел точную статью, которую я прочитал в январе 2018, когда я нашел эту проблему.

Можно использовать letsencrypt/certbot с опцией certonly. При использовании этой опции инструмент запустит свой собственный временный веб-сервер для генерации файлов сертификата. Порты 80 и 443 должно быть открыто в Вашем брандмауэре. И необходимо остановить Apache некоторое время. К сожалению, необходимо сделать это когда Вы renew сертификаты.

sudo service apache2 stop           # Ubuntu 14.04
sudo systemctl stop apache2.service # Ubuntu 16.04 and above

sudo letsencrypt certonly --rsa-key-size 4096 --email user@example.com -d example.com -d www.example.com -d another.example.com
# Select the option: Automatically use temporary web server (standalone)

sudo service apache2 start           # Ubuntu 14.04
sudo systemctl start apache2.service # Ubuntu 16.04 and above

Затем необходимо отредактировать вручную конфигурационный файл виртуального хоста. Вот пример с постоянным перенаправлением от HTTP до HTTPS (замена example.com с Вашим FQDN):

<VirtualHost *:80>
        ServerName example.com

        # Redirect Requests to HTTPS
        Redirect permanent / https://example.com/

        ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
        CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerName example.com
        ServerAdmin admin@example.com

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

        DocumentRoot /var/www/html
        <Directory /var/www/html>
            # Conf directives...
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/example.com.ssl.error.log
        CustomLog ${APACHE_LOG_DIR}/example.com.ssl.access.log combined
    </VirtualHost>
</IfModule>

Включите модуль SSL для Apache и перезапустите его еще раз.

Ссылки:

Надеюсь эта справка!

0
ответ дан 2 December 2019 в 07:38

Другие вопросы по тегам:

Похожие вопросы: