letsencrypt предлагает бесплатные SSL сертификаты сроком действия в 3 месяца, они могут быть установлены на любой веб-сервер или использоваться, например, для шифрования почты. Такие сертификаты принимаются всеми браузерами, но по причине ограниченного периода действия требуют частого продления, которое можно автоматизировать. В случае с Apache2 такая автоматизация выполняется наиболее легко.
Установка и настройка автопродления letsencrypt на Apache2 (Debian 8)
Устанавливать сертификат letsencrypt и настраивать автопродление будем на сервере с операционной системой Debian 8 и Apache2 в качестве веб-сервера.
Проще всего ставить letsencrypt на Apache при помощи клиента certbot (приведенную строку с репозиторием нужно добавить в конец файла)
mcedit /etc/apt/sources.list.d/backports.list
deb http://ftp.debian.org/debian jessie-backports main
Обновляем список подключенных репозиториев чтобы изменения, внесенные на предыдущем шаге считались
apt-get update
Устанавливаем certbot из бэкпортов
apt-get install python-certbot-apache -t jessie-backports
В конфигурационный файл виртуального хоста изменений вносить не требуется. В нем должно указываться ServerName, других требований нет — файл будет взят за основу при создании конфига для HTTPS
mcedit /etc/apache2/sites-available/example.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerSignature On
ServerName example.com
ServerAlias www.example.com
AddDefaultCharset utf-8
CustomLog /var/log/apache2/example.com/access.log
LogLevel warn
SuexecUserGroup web web
DocumentRoot «/home/web/example.com/www/»
…
</VirtualHost>
Запускаем генерацию сертификата — возникнет несколько диалогов, в них потребуется выбрать сайты на сервере, для которых требуется наст роить https, а также тип редиректа на безопасное соединение (безусловный или опциональный)
certbot —apache
После того как процесс завершен проверяем конфигурацию
apache2ctl configtest
Вывод в консоль должен состоять из Syntax OK, это означает, что ошибок в конфигурационных файлах нет и apache2 можно перезапустить
/etc/init.d/apache2 restart
После перезапуска веб-сервера сайт будет доступен по https
Чтобы обновлять сертификаты по расписанию нужно добавить задание в CRON
crontab -e
20 1 * * 1 /usr/bin/certbot renew
При таком задании сертификат будет обновляться автоматически раз в неделю по понедельникам в 1:20.
Читайте также про работу с CRON и про установку сертификата letsencrypt на сервер с Nginx