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
Вот и все.