Массовый переход сайтов на работу по зашифрованному протоколу день за днём набирает обороты. И если раньше работа с сертификатами представляла собой довольно рутинную задачу, то сегодня можно запросто и бесплатно получить сертификат с базовой проверкой принадлежности владельцу.
И в этом нам поможет классный сервис Let’s Encrypt. Этот центр сертификации начал работать в бета-режиме с 3 декабря 2015 года. И за это время число его пользователей растёт.
Let’s Encrypt выдаёт сертификаты со сроком действия, равным 90 дням. При этом, обновление сертификатов полностью автоматизировано. На данный момент в Debian из репозитория backports можно установить пакет certbot, который обеспечивает лёгкое получение сертификатов и их автоматическое обновление, выполняющееся два раза в сутки по крону.
В первую очередь подключаем репозиторий backports. со свежей версией nginx, собранной с поддержкой ALPN.
А следом установить certbot:
aptitude install -t jessie-backports certbot
Содержание статьи:
- 1 Получаем сертификат для Nginx
- 2 А что насчёт Apache?
- 3 Автоматическое обновление сертификатов по крону
Получаем сертификат для Nginx
Чтобы получить сертификат для этого веб-сервера, будет использоваться плагин «webroot», который подходит для использования с любым сервером. Даже если это lighttpd.
Команда для получения сертификата выглядит так:
certbot certonly --webroot -w /var/www/example.com -d example.com -d www.example.com
Здесь после ключа -w указываем полный путь к каталогу с сайтом на сервере. После ключа -dимя домена, для которого нужно получить сертификат. Одновременно можно получить сертификаты на пять доменов. Не забудьте указать домен с www и без. ;)
Папка с сайтом должна существовать и быть доступной из интернета, чтобы certbot мог подтвердить принадлежность сайта и его корректную работу.
Полученные сертификаты следует искать в каталоге /etc/letsencrypt/live/yourdomain.com/. В качестве сертификата в конфиге сервера нужно прописать файл fullchain.pem, а в качестве ключа — privkey.pem. Пример:
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
А что насчёт Apache?
Для него тоже можно получить сертификат. Годится как выше описанный метод, так и специально задуманный плагин для apache. Только в этом случае придётся установить иной пакет.
aptitude install -t jessie-backports python-certbot-apache
А сам сертификат устанавливается более простой командой:
certbot --apache
Или, если вы хотите вручную настроить apache:
certbot --apache certonly
Естественно, сайт и в этом случае должен быть уже настроен. К сожалению, свой опыт использования certbot для apache я не смогу описать, так как давно не пользуюсь этим веб-сервером. Поэтому, рекомендую прочесть официальную документацию на английском.
Аналогично nginx, путь к сертификатам и ключу следует прописать в конфигурационном файле виртуального хоста.
SSLCertificateFile "/etc/letsencrypt/live/yourdomain.com/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
Автоматическое обновление сертификатов по крону
Как уже упоминалось ранее, при установке создаётся задание на обновление в каталоге /etc/cron.d/certbot, выполняемое дважды в сутки. Содержимое задания таково:
0 */12 * * * root test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot -q renew
При этом, вся работа certbot записывается и его логи вы можете найти в каталоге /var/log/letsencrypt/. Это может помочь, если у вас возникнут проблемы. Однако, из своего опыта могу заметить, что таковые не возникали, пока что. :)