Как настроить SSL используя Certbot и Let’s Encrypt

Мы предоставляем услуги удаленного администрирования серверов

Как настроить SSL используя Certbot и Let’s Encrypt

Поделиться

Если вы решили настроить HTTPS на ваших серверах, то думаю вам стоит воспользоваться Certbot, т.к. это простой и быстрый способ получения сертификатов.

Let’s Encrypt и Certbot

Let’s Encrypt — это бесплатный и автоматизированный (с помощью ACME протокола) центр сертификации, а Certbot — один из многих доступных клиентов, который сильно упрощает жизнь.

Установка Certbot

Мы используем CentOS 7 и на сайте Certbot уже есть необходимые команды для установки:

sudo yum install epel-release

 

sudo yum install certbot

 

Получение SSL сертификата

Certbot имеет систему плагинов. Наиболее многообещающий из них — nginx, однако меня смущают некоторые моменты в документации:

Плагин Nginx является экспериментальным… Nginx Web Server — в настоящее время не работает

У нас есть ряд виртуальных серверов и мне не хотелось все испортить, поэтому я решил воспользоваться другим плагином, который также хорошо подходил — webroot.

Webroot плагин

Принцип работы данного плагина прост: указываем ему на главную/root папку веб сервера, он создает там папку .well-known и кладет туда необходимые для проверки файлы, после чего клиент со стороны Let’s Encrypt проверяет их и таким образом мы подверждаем права на указанный домен. Более детально процесс описан на сайте Let’s Encrypt.

Ниже приведу пример необходимой для генерации сертификатов команды:

certbot certonly --webroot -w /var/www/linuxadmins/example.com/current/web -d example.com 

Здесь мы имеем следующие части:

certonly — при использовании данной команды Certbot лишь получит сертификаты, но не будет ничего делать с вашим веб сервером и устанавливать их;

--webroot — указываем необходимый нам плагин;

-w — флаг для указания главной веб директории сервера. Просто указываем путь;

-d — флаг для указания домена. Вы можете использовать несколько таких флагов после флага -w при условии, что они все имеют одну и ту же главную веб папку.

Все сгенерированные ключи и сертификаты будут находиться в /etc/letsencrypt/live/$domain. Если вы получаете сертификат для множества доменов за раз, то тогда на выходе получите только одну папку по имени первого из указанных доменов. В нашем примере это будет /etc/letsencrypt/live/example.com.

Настройка Nginx

Далее обновим конфигурацию виртуального сервера:

server {
    listen 443 ssl http2;
    server_name <ПЕРЕЧИСЛЕНИЕ ДОМЕНОВ ДЛЯ ИСПОЛЬЗУЕМОГО СЕРТИФИКАТА>;
    ssl_certificate <ПУТЬ К fullchain.pem ФАЙЛУ>;
    ssl_certificate_key <ПУТЬ К privkey.pem ФАЙЛУ>;
}

Не забудьте перезагрузить Nginx:

sudo nginx -s reload

Ограничения

У Let’s Encrypt есть свои ограничения, о которых следует знать. Наиболее существенным из них является то, что время жизни сертификатов от Let’s Encrypt составляет 90 дней. Вы ведь не хотите забыть их вовремя продлить? К счастью эту часть работы можно легко автоматизировать.

Автоматизация продления сертификатов

Решать проблему мы будем с помощью crontab, но сначала советую выполнить следующую команду

certbot renew dryrun

 

под пользователем, под которым будете настраивать crontab, и убедиться, что все отработало нормально. Это необходимо сделать т.к. одна из потенциальных проблем — права на папки, с которыми работает certbot. Если проблем нет, то выполняем crontab -e и настраиваем продление сертификатов:

# Certbot: продление сертификатов
X */12 * * * certbot renew && service nginx reload

Вниманиезамените X значением от 0 до 59.

Certbot рекомендует запускать обновление чаще чем раз в 3 месяца. Задача выше будет запускаться дважды в день. Чтобы лучше понять crontab, воспользуйтесь Crontab Guru Если ваши сертификаты будут свежими на момент запуска certbot, то он просто ничего не будет делать.

Выводы

Полная настройка заняла порядка 5 минут и была весьма приятной (думаю все любят когда всё работает быстро и с первого раза), поэтому я рекомендую вам опробовать данный подход.

материал взят с сайта
 2019-2020 © linuxadmins all rights reserved

Facebook Twitter Vkontakte