Бесплатный SSL сертификат от L’ets Encrypt на Debian

Массовый переход сайтов на работу по зашифрованному протоколу день за днём набирает обороты. И если раньше работа с сертификатами представляла собой довольно рутинную задачу, то сегодня можно запросто и бесплатно получить сертификат с базовой проверкой принадлежности владельцу.

Бесплатный SSL сертификат от L’ets Encrypt на Debian

И в этом нам поможет классный сервис 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/. Это может помочь, если у вас возникнут проблемы. Однако, из своего опыта могу заметить, что таковые не возникали, пока что. :)