Let's Encrypt, Apache2 - Правильное редактирование vhosts

Как правильно редактировать /etc/apache2/sites-enabled когда есть example.com.conf а также example.com-le-ssl.conf?

Должен ли я редактировать оба файла при изменении чего-либо? Или только один, а потом как-то силой certbot-auto починить это?

1 ответ

Решение

Я не уверен, каков правильный ответ на ваш вопрос, но я бы предложил вам следующее упрощение:

1. Заставьте всех пользователей использовать HTTPS. Определение HTTP VirtualHost должно выглядеть следующим образом:

<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>

Таким образом, вам нужно будет поддерживать только конфигурацию HTTPS VirtualHost.

2. Как только вы сгенерируете файлы SSL-сертификатов Let's Encrypt, опишите их вручную в определении HTTPS 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

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

        DocumentRoot /var/www/html    
        <Directory /var/www/html>
              # etc...
        </Directory>

        # etc...

    </VirtualHost>
</IfModule>

3. Вставьте определения обоих VirtualHost s в один файл конфигурации:

<VirtualHost *:80>
        # etc...
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        # etc...
    </VirtualHost>
</IfModule>

Этот файл может быть /etc/apache2/sites-available/example.com.conf,

4. Не забудьте a2dissite ненужные виртуальные хосты (соответственно a2ensite необходимые) и перезагрузите Apache.

5. Отредактируйте crontab root и добавьте задание, которое будет пытаться обновлять сертификаты, например, каждую неделю. Тип sudo crontab -e и добавьте эту строку внизу:

0 3 * * 0 /usr/bin/letsencrypt renew  >> /var/log/letsencrypt-renew.week-$(date +%W).log 2>&1

Вот и все.

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