Let's Encrypt на Apache с автопродлением на Debian

letsencrypt предлагает бесплатные SSL сертификаты сроком действия в 3 месяца, они могут быть установлены на любой веб-сервер или использоваться, например, для шифрования почты. Такие сертификаты принимаются всеми браузерами, но по причине ограниченного периода действия требуют частого продления, которое можно автоматизировать. В случае с Apache2 такая автоматизация выполняется наиболее легко.

letsencrypt apache

Установка и настройка автопродления 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 info@example.com
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