Let’s Encrypt: получение сертификата по шагам
В данной статье будет описан реальный способ получения сертификата от Let’s Encrypt в ручном режиме для его дальнейшей установки на веб-сервер Windows (IIS/Microsoft Azure) или Linux (полностью ручной режим). Из-за отсутствия официального клиента под Windows для генерации сертификата будет использоваться дистрибутив Linux.
В первые дни открытия заявок на бета-тестирование и было принято решение записаться и вот недавно пришло письмо, которое сообщает о том, что теперь программа ACME сгенерирует валидный сертификат для нашего домена.
Далее мы решили опубликовать статью с пошаговой инструкцией процесса, чтобы к моменту релиза вы уже смогли оперативно создать и начать пользоваться своим сертификатом.
Как это работает
Полное описание процесса доступно по этой ссылке.
Важно лишь знать, что для подтверждения владения доменом и успешной генерации сертификата нужно будет иметь доступ к записям DNS или к серверу куда ссылается A-запись, что вполне логично.
Смысл программного набора Automated Certificate Management Environment (ACME) (написан на Python) в том, чтобы автоматизировать генерацию и установку сертификата в Linux-окружении.
Существует неофициальный Windows-клиент с открытыми исходными кодами, который может генерировать и устанавливать сертификаты на Windows IIS и Amazon Web Services, но у нас была задача получить ключи и установить их вручную. Предлагаю любому желающему написать статью по работе с ним.
Процесс по шагам
Внимание: эта инструкция учит создавать сертификат в ручном режиме, существуют и более простые способы автоматической генерации и обновления сертификатов. Надеюсь, что скоро их опишут на этом ресурсе.
[11/01/17] Новый клиент CertBot
Небольшое обновление статьи в 2017 году.
Теперь можно установить CertBot и получить сертификат в ручном режиме.
1. Скачиванием дистрибутив
2. Установка прав на файл
chmod a+x certbot-auto
3. Запуск для получения сертификата в ручном режиме
4. Следуйте указаниям программы (подробнее смотрите в полной инструкции ниже с шага № 4).
Подробная инструкция (старый клиент — всё ещё работает)
Использовалась официальная инструкция.
Пользователи Linux могут использовать текст ниже как пример генерации сертификата в ручном режиме.
1. Запустите ваш любимый дистрибутив Linux (мы использовали Debian 8).
либо 2. Установите Git и выполните команды ниже:
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
или 2. Скачайте и распакуйте в папку данный архив и перейдите в эту папку
3. Запустите установку и генерацию с помощью
Вам будет предложено ввести электронную почту для восстановления в будущем.
Ключ -a manual позволит сгенерировать ключи в ручном режиме без их автоматической установки на веб-сервер.
4. Далее введите домены для которых вы хотите создать сертификаты
5. Подтвердите сохранение вашего адреса в логах Let’s Encrypt
6. Подтвердите владение доменом
В сентябре 2016 года произошли небольшие изменения в порядке получения сертификата. Спасибо toxi_roman за обновление.
Это один из ответственных моментов в режиме ручной регистрации.
Обратите внимание: нас просят создать ответ на запрос, который возвращает Content-Type text/plain.
Такой ответ не пройдёт и подтверждение выдаст ошибку:
Нужно, чтобы было так:
7. После успешной проверки, будут созданы следующие сертификаты в папке /etc/letsencrypt/live/[имя домена]:
privkey.pem — приватный ключ для сертификата
Используется Apache для SSLCertificateKeyFile и nginx для ssl_certificate_key.
cert.pem (сертификат сервера)
Используется Apache для SSLCertificateFile.
chain.pem (сертификат цепочки)
Он же используется Apache для SSLCertificateChainFile.
fullchain.pem (соединение chain.pem и cert.pem)
Он же используется nginx для ssl_certificate.
7. Теперь пришло время сконвертировать его в родной для Windows .pfx формат.
Перейдите в папку /etc/letsencrypt/live/[имя домена] (откройте терминал в режиме администратора с помощью команды su):
cd /etc/letsencrypt/live/[имя домена]
Запустите OpenSSL с помощью команды:
и начните конвертацию с помощью команды:
Вас попросят ввести пароль и подтвердить его.
7.2 Выходим из OpenSSL с помощью команды quit
8. Мы получили сертификат mydomain.pfx, который теперь можем использовать в Windows-окружении.
Важно знать, что сертификаты Let’s Encrypt валидны 90 дней. Рекомендуется обновлять их каждые 60 дней. На электронную почту, которую вы указали для генерации, будут приходить уведомления об истечении сертификата.
Буду рад услышать ваши замечания или пожелания к статье.
Fullchain-сертификаты и как их добыть
Содержание
Что такое сертификаты безопасности?


Таких блоков в файле может быть один или больше, в зависимости от длины цепочки.

Файл будет работоспособен при любом порядке блоков, но всё же желательно его соблюдать.
Неправильная последовательность снизит рейтинг SSLLabs вашего сайта (если он вам нужен; для навыков Алисы этот фактор не имеет значения).
Более важная деталь: в файле не должно быть пустых строк! Также, в зависимости от операционной системы, на которой работает веб-сервер, могут быть разные требования к символам переноса строки. И, конечно, недопустимы никакие комментарии, пометки, посторонние символы.
Теперь легко понятны ещё два термина:
Для цифровой аутентификации, в том числе подписи к сертификатам существует два вида ключей:
| Публичный (открытый) | Приватный (закрытый) |
|---|---|
| Можно и нужно открывать в доступ | Ни в коем случае никому нельзя отдавать |
| Используется только для проверки подписи и идентичности владельца | Используется для создания цифровых подписей |
Организацию, выпускающую сертификаты (удостоверяющий центр или любую другую) называют издателем. Каждый издатель выкладывает в общий доступ свой публичный ключ, чтобы любой желающий мог проверить, действительно ли сертификат подписан именно этим издателем.
fullchain-сертификаты в навыках Алисы
Благо, сегодня вряд ли удастся встретить хостинг без поддержки SSL/HTTPS, зато бесплатных сертификатов в достатке (да, те самые Lets’ Encrypt, SSL For Free, CAcert итд).
Как получить такой сертификат?
Вариантов и инструкций в Интернете достаточно много. В том числе у нас на вики в статье » Алиса управляет Умным домом через Node-RED».
Lets’ Encrypt и certbot
Потребуется установить программу certbot. Под *nix- системами это сделать проще, но под Windows тоже не потребуется сверхъестественных усилий.
Предположим, что certbot у вас установлен. Что дальше? Запускаем несколько консольных команд.
Если опасаетесь, что что-то не так и хотите сначала потренироваться, добавьте опцию —dry-run (режим эмуляции для отладки ошибок)
После успешной генерации сертификата у вас появятся 4 файла (их расположение также сильно зависит от вашей операционной системы):
Для веб-сервера необходимы два из них: fullchain.pem и privkey.pem.
Ещё несколько полезных команд certbot
Проверка и обновление сертификатов (полезно поставить запуск этой команды по расписанию):
Для проверки и обновления также есть тестовый режим (чтобы убедиться. что ваши домены будут обновляться):
Добавление новых доменов и поддоменов к сертификату:
Изменение адреса администратора:
SSL For Free
Получить сертификат через онлайн-сервис намного быстрее и проще, ничего устанавливать не нужно:
Сертификат готов, но. сервис SSL For Free создаёт три файла:
Сделать это можно как консольными командами, так и в обычном Блокноте Windows. Пример консольной команды:
Серверу отдаём, соответственно, fullchain.crt и private.key.
Немного паранойи
Как понять, что всё хорошо
Очень просто: вы скопировали файлы сертификатов в нужную папку, указали вашему веб-серверу пути к ним, и всё работает! 🙂
Как понять, что всё плохо
При попытке верифицироваться с неполноценным сертификатом вы получите сообщение «Endpoint URL: Некорректный SSL-сертификат».
Возвращайтесь к началу инструкции, по которой вы его выпускали и проверьте, всё ли вы сделали правильно. Сравните с любой другой инструкцией из Интернета. Возможно, где-то вкралась ошибка, или другое объяснение окажется для вас более полным и понятным.
Как проверить сертификат на валидность
Онлайн
Вот несколько популярных сервисов для онлайн-проверки валидности сертификатов:
Офлайн (без доступа к Интернету)
Да, в изолированных сетях и сетях без доступа к Интернету тоже бывают нужны SSL-сертификаты. И значит, должен быть способ их проверки без выхода в Интернет.
Небольшой пример проверки того, что сертификаты правильно собраны в один файл (в примере назван «domain.ca-bundle»):
Команды возвращают хэш-суммы сертификатов. Для bundle, cert, private_key и всех промежуточных сертификатов они должны совпадать.
Выпуск и установка SSL-сертификатов от Let’s Encrypt на VPS
Что такое SSL-сертификат и зачем он нужен?
SSL-сертификат (TLS-сертификат) — это специальный цифровой документ, который связывает между собой криптографический ключ и информацию о сайте, для которого он был выпущен. Наличие SSL-сертификата, выпущенного доверенным центром сертификации является обязательным условием для установления безопасного соединения между сервером и клиентами по протоколу HTTPS.
До недавнего времени, практически все центры сертификации выпускали SSL-сертификаты на платной основе. При этом существует несколько разновидностей таких сертификатов, различающихся степенью глубины проверки данных о владельце сайта. Из-за того, что такие SSL-сертификаты являлись платными, их достаточно редко использовали для небольших сайтов, домашних страниц, личных блогов и т.п. В результате, большая часть сайтов в интернете не использовала защищенные протоколы для связи с клиентами.
К счастью, на текущий момент, благодаря Let’s Encrypt, у владельцев сайтов появилась возможность совершенно бесплатно и автоматически выпускать SSL-сертификат для своего сайта и перейти на использование защищенного протокола HTTPS.
Let’s Encrypt — некоммерческий центр сертификации, у которого можно получить бесплатный SSL‑сертификат сроком действия в 90 дней. Для получения такого сертификата необходимо подтвердить факт владения доменом с использованием протокола аутентификации ACME (Automated Certificate Management Environment), согласно которому к веб-серверу, запросившему выпуск сертификата, производится серия запросов для валидации домена. После выполнения этой процедуры клиенту выдается SSL-сертификат и приватный ключ, которые необходимо передать своему веб-серверу для перехода на работу по протоколу HTTPS.
Мы подготовили простые инструкции, которые позволят вам выпустить бесплатный SSL-сертификат и настроить его автоматическое обновления для веб-серверов Nginx, Apache и панели управления VestaCP, в зависимости от того, что вы используете на своем виртуальном сервере.
Выпуск и настройка сертификата для панели управления VestaCP
Поддержка Let’s Encrypt доступна в VestaCP из коробки.
Для выпуска и установки сертификата вы можете отметить дополнительные опции сразу при добавлении домена в разделе WEB панели VestaCP:
Или отредактировать настройки домена в разделе WEB, выбрав опции поддержки SSL уже после добавления:
Выпуск и автоматическая установка сертификата занимают до 5 минут. После этого данные SSL-сертификата будут доступны также в настройках домена.
Помимо этого, добавляется cron-задание для автоматического обновления сертификатов, истекающих через 30 и менее дней. Проверить это можно в разделе CRON панели VestaCP:
Решение возможных проблем
Error: Let’s Encrypt validation status 400
Error: LetsEncrypt challenge request 429
Выпуск и настройка сертификата для веб-серверов Apache и Nginx
В случае использования веб-сервера без панели управления выпуск, дальнейшее обновление сертификата и настройку веб-сервера удобно будет выполнять при помощи Certbot.
Certbot — это клиент протокола ACME, который устанавливается на конечном сервере и используется для запроса сертификата, валидации домена, установки сертификата и дальнейшего автоматического продления сертификатов от Let’s Encrypt. Для получения сертификатов у Certbot есть несколько плагинов, которые делятся на два типа — аутентификаторы и установщики.
Аутентификатор используется только для получения сертификатов — он проверяет, что вы имеете доступ к домену, для которого запрашиваете сертификат, получает сертификат для указанного домена и помещает файлы сертификата в каталог /etc/letsencrypt/ на вашем сервере. Аутентификатор не устанавливает сертификат и не редактирует конфигурацию вашего веб-сервера для настройки сертификата.
Установщик — это плагин, который помимо получения сертификатов устанавливает его путем изменения конфигурации вашего веб-сервера. На сегодняшний день установка сертификатов полностью автоматизирована и для Apache, и для Nginx.
Для веб-сервера Apache
Установка Certbot на Ubuntu 18.04 с веб-сервером Apache:
CentOS 7 с веб-сервером Apache:
Debian 9 с веб-сервером Apache:
Инструкция по установке Certbot на другие дистрибутивы доступна на официальном сайте Certbot.
После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Apache для выпуска и автоматической установки сертификата:
Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Apache.
Если вы запускаете Certbot впервые, вам будет предложено указать email для регистрации в Let’s Encrypt и получения важных уведомлений, а также ознакомиться с условиями использования и принять их.
После окончания установки сертификата Certbot предоставит вам дополнительную информацию, а также ссылку для проверки установленного сертификата:
Плагин Webroot
Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин apache с командой certonly:
Плагин apache с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый виртуальный хост для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения, а также при необходимости активирует mod_ssl.
Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Apache, используйте плагин webroot.
После запуска плагина вы сможете указать доменное имя (или имена) для запроса сертификата, а также путь к директории с файлами сайта.
По результатам работы Certbot уведомит вас и в случае успеха укажет путь к файлам сертификата. В нашем примере файлы размещены по пути:
Путь к этим файлам необходимо указать в ssl конфигурации Apache. Если для домена нет отдельной конфигурации — скопируйте и переименуйте файл дефолтной конфигурации, например:
Затем откройте файл для правки и исправьте значения следующих директив на соответствующие вашему домену пути:
В том же файле в директиве необходимо вместо хоста по умолчанию указать «*» :
Теперь необходимо активировать mod_ssl и включить новую конфигурацию, после чего перезагрузить веб-сервер:
Обновление сертификатов
Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания.
Протестировать автоматическое обновление сертификатов вы можете, выполнив команду:
Для веб-сервера Nginx
Установка Certbot на Ubuntu 18.04 с веб-сервером Nginx.
CentOS 7 с веб-сервером Nginx:
Debian 9 с веб-сервером Nginx:
Инструкция по установке Certbot на другие дистрибутивы доступна на официальном сайте Certbot.
После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Nginx для выпуска и автоматической установки сертификата
Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Nginx.
Если вы запускаете Certbot впервые, вам будет предложено указать email для регистрации в Let’s Encrypt и получения важных уведомлений, а также ознакомиться с условиями использования и принять их.
После окончания установки сертификата Certbot предоставит вам дополнительную информацию, а также ссылку для проверки установленного сертификата:
Плагин Webroot
Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин nginx с командой certonly:
Плагин nginx с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый блок server для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения.
Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Nginx, используйте плагин webroot.
После запуска плагина вы сможете указать доменное имя (или имена) для запроса сертификата, а также путь к директории с файлами сайта.
По результатам работы Certbot уведомит вас и в случае успеха укажет путь к файлам сертификата. В нашем примере файлы размещены по пути:
Путь к этим файлам необходимо указать в блоке server конфигурации Nginx. Пример настроек SSL для Nginx в файле /etc/nginx/sites-available/default:
После этого проверим корректность конфигурации:
После чего перезагрузим веб-сервер:
Обновление сертификатов
Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания.
Протестировать автоматическое обновление сертификатов вы можете, выполнив команду:
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Получаем сертификаты Let’s Encrypt при помощи Certbot

Что такое Certbot? Это клиент протокола ACME предназначенный для автоматического управления SSL-сертификатами от Let’s Encrypt, он позволяет полностью автоматизировать процесс получения и продления сертификата, а при использовании соответствующих плагинов даже может автоматически конфигурировать веб-сервер или иное, использующее сертификат приложение.
Все дальнейшие инструкции будут предназначены для пользователей актуальных версий Debian и Ubuntu, но многое будет справедливо и для иных дистрибутивов Linux.
Установка в Debian 8 Jessie
Debian 8 является на сегодня основной «рабочей лошадкой» в своем семействе. Однако в официальных репозиториях Certbot отсутствует и для его установки вам потребуется подключить специальный backports-репозиторий. Он содержит скомпилированные для использования в среде текущего дистрибутива пакеты из более новых версий, которые могут быть недостаточно стабильными или иметь некоторые иные проблемы, поэтому использовать его следует с осторожностью.
Откроем файл /etc/apt/sources.list и добавим в него следующую строку:
Затем обновим список пакетов:
Теперь установим пакет с явным указанием репозитория:
Так как Certbot написан на Python при его установке будет автоматически подтянуто довольно большое количество python-пакетов по зависимостям, однако это не должно вызвать каких-либо проблем.
Установка в Debian 9 Stretch
В новом выпуске Debian все просто, отныне Certbot представлен в официальном списке пакетов и для его установки достаточно выполнить одну простую команду:
В остальном процесс ничем не отличается от Jessie, также будет подтянуты необходимые python-зависимости.
Установка в Ubuntu 14.04/16.04
В отличие от разработчиков Debian в Ubuntu пошли другим путем, оформив Certbot в виде отдельного PPA. Данная технология позволяет любому желающему создать собственный репозиторий и хорошо известна любому пользователю Ubuntu, однако вся ответственность за содержимое PPA лежит только на их авторах, поэтому использовать их следует с определенной долей осмотрительности и осторожности.
Прежде всего установим необходимое для работы с PPA программное обеспечение:
Затем добавим нужный PPA:
Обновим список пакетов:
и установим Certbot:
Последовательность действий для всех дистрибутивов Ubuntu одинаковая, при подключении PPA автоматически определяется выпуск Ubuntu и добавляются нужные репозитории. Точно также можно установить Certbot на промежуточные релизы (16.10 или 17.04) но мы не рекомендуем их использование в производственных средах.
Подготовка к получению сертификатов
В предыдущей статье цикла мы довольно подробно разбирали работу плагина webroot, который позволяет автоматически получать сертификаты используя уже установленный в системе веб-сервер. Если коротко, то вы указываете путь к корневой директории сайта, для которого получаете сертификат в файловой системе, Certbot создает там необходимую структуру папок и размещает необходимый для проверки файл.
В случае с одним доменом это не вызывает проблем, но если их много или вам требуется сертификат сразу на несколько доменов (основной домен и поддомены), корневые директории у которых отличаются, то у вас возникнут затруднения. Поэтому сам Let’s Encrypt рекомендует перейти в таком случае на единую точку подтверждения сертификатов. Сделать это несложно, и мы сейчас расскажем, как.
В доступной для веб-сервера директории создадим отдельную папку, скажем, letsencrypt, которую затем мы будем использовать для всех обслуживаемых доменов и установим ее владельцем веб-сервер:
Теперь нам нужно сделать так, чтобы любой запрос вида:
приводил к физическому размещению:
Это несложно, но для каждого из веб-серверов делается по-разному, ниже мы рассмотрим самые популярные из них.
Apache 2.x
Apache является самым распространенным и популярным веб-сервером, актуальной версией является 2.4.x, для его подготовки к работе с Certbot добавьте в основной конфигурационный файл /etc/apache2/apache2.conf следующую секцию:
Для устаревшей версии Apache 2.2 данный блок должен выглядеть следующим образом:
Данная секция создает для любого запроса к /.well-known/acme-challenge алиас (псевдоним), указывающий на физическую директорию /var/www/letsencrypt/.well-known/acme-challenge, а ее расположение в основном конфигурационном файле позволит распространить действие директив для любого обслуживаемого домена. Остальные параметры задают необходимые параметры безопасности.
Nginx
Если вы настраивали сервер по нашей инструкции, то мы рекомендуем вынести указанный блок в отдельный шаблон, например, /etc/nginx/templates/letsencrypt.conf и впоследствии подключать в конфигурацию виртуального хоста именно его и в общих чертах это должно выглядеть так:
Данный подход является хорошей практикой, так как в случае внесения каких-либо изменений их придется делать только в одном месте, вне зависимости от числа обслуживаемых виртуальных хостов.
Lighttpd
В русскоязычной среде данный веб-сервер недостаточно распространен, так как пользователи отдают предпочтение Nginx, но в мировом масштабе он входит в число наиболее популярных веб-серверов. Если вы используете именно его, то откройте основной конфигурационный файл /etc/lighttpd/lighttpd.conf и убедитесь, что в секции server.modules присутствует значение mod_alias, в противном случае его необходимо добавить.

Не забывайте, что после внесения изменений в конфигурационные файлы любой веб-сервер необходимо перезапустить.
Регистрация в Let’s Encrypt
Да, вы не ошиблись, именно регистрация. Обычно этот пункт пропускают, так как регистрация автоматически выполняется при первом получении сертификата. Но так как мы подробно разбираем работу Certbot, то решили коротко коснуться и этого момента.
Регистрация нужна для формирования ключевой пары, которой впоследствии подписываются все запросы, что позволяет удостовериться в подлинности отправителя. Это важно, так как все запросы передаются по открытым каналам и теоретически возможен их перехват и модификация.
Адрес электронной почты указываемый при регистрации используется для рассылки уведомлений, например, при неудачной попытке продления сертификата, поэтому следует указывать рабочий ящик, лучше всего собственный. Один и тот-же адрес можно использовать для регистрации на разных хостах, ограничений по этому параметру нет.
Для регистрации выполните команду:
Для успешного прохождения процедуры вам потребуется всего-лишь согласиться с условиями использования. Учетная информация будет сохранена в каталог /etc/letsencrypt/accounts, если содержимое данной директории будет утрачено, то вы не сможете продлить сертификаты и вам придется получать их заново, создав новый аккаунт. Это следует учитывать, например, при переносе системы на новый сервер.
Если вам необходимо изменить адрес электронной почты аккаунта, скажем при смене администратора, то это можно сделать командой:
Следует помнить, что технической возможности восстановления аккаунта нет и в случае его утраты вам придется заново выпускать все сертификаты.
Получение сертификата
При удачном прохождении теста вы получите краткий ответ:

После того как тестовый запуск увенчался успехом можно переходить к получению сертификата:
Именно эти файлы следует использовать в конфигурационных файлах служб при настройке SSL, конкретные реализации выходят за рамки данной статьи и это будет сделано в отдельных материалах, мы же заглянем еще глубже под капот.
При внимательном рассмотрении выяснится, что файлы в директории live являются символьными ссылками на аналогичные файлы в /etc/letsencrypt/archive:
Настоящие файлы хранятся в аналогичной по структуре директории archive и имеют в наименовании порядковый номер, который увеличивается при каждом продлении сертификата. Например, при первом получении сертификата ссылка cert.pem из live будет указывать на cert1.pem из archive, после продления туда добавится cert2.pem, и ссылка начнет указывать на него. Как видим процесс обновления сертификатов реализован прозрачно для использующих их служб и достаточно все настроить один единственный раз, остальное Certbot берет на себя.
Следует отметить и то, что старые файлы сертификатов не удаляются, это позволяет избежать ошибок в том случае, если какие-то службы оказались неправильно настроены и не смогли переключиться на новый сертификат. Они продолжат работу по защищенному протоколу, но посетители начнут получать сообщение об ошибке сертификата.
Полученный сертификат можно в любой момент расширить, добавив в него новые домены, для этого следует использовать ключ —expand:
Таким образом вы всегда можете добавить в сертификат нужные домены не затрагивая остальной инфраструктуры, напомним, что лимит составляет 100 доменов на один сертификат.
Продление сертификатов
Как видим, никаких дополнительных параметров не передается, и Cerbot сам определяет что нужно продлевать. Каким образом он это делает? Вернемся в /etc/letsencrypt и заглянем еще в одну директорию renewal, там мы обнаружим некие конфигурационные файлы с именами доменов, например, example.com.conf, откроем его. В начале будут перечислены файлы сертификата и пути к ним, эта информация нас мало интересует, гораздо интереснее вторая часть файла, которая выглядит примерно так:
Здесь скрыт один из подводных камней, допустим сначала у вас был один домен, и вы просто получали сертификат для него указывая:
Затем доменов стало больше, и вы перешли на единую точку подтверждения сертификатов /var/www/letsencrypt, но в конфигурационном файле по-прежнему останется /var/www/example.com и такой домен автоматически продлиться не сможет.
Поэтому мы рекомендуем всегда проверять возможность продления командой:
Как и в случае с получением сертификата ключ —dry-run предписывает провести тестовый запуск с симуляцией продления, что позволит своевременно выявить возможные ошибки и устранить их.
Сама же команда renew, как многие успели догадаться, последовательно получает конфигурационные файлы из директории renewal и выполняет продление согласно указанным там параметрам.
В принципе, убедившись в успешности тестового продления можно оставить все как есть, но лучше произвести тонкую настройку. Прежде всего добавим к команде продления ключ —allow-subset-of-names:
Данный ключ предписывает получать сертификат для неполного набора доменов, это нужно для того, чтобы если один из доменов, перечисленных в сертификате вдруг окажется недоступным, сертификат был получен для остальных.
Простой пример из жизни. Вы собираетесь провести серьезную переработку сайта, для этого вы создаете новый домен new.example.com и производите разработку и тестирование на нем, его же вы добавляете в сертификат. Затем вы переносите новый сайт на основной домен, а старый перемещается на old.example.com, который также добавляется в сертификат. Через какое-то время кто-то отключает new.example.com за ненадобностью и потом в одно не очень прекрасное утро сайт «порадует» вас просроченным сертификатом.
Но это еще не все, после того как сертификат будет продлен нужно перезапустить все службы его использующие, например, веб-сервер. Можно прописать еще одно задание в cron, но правильно будет сделать по-другому. Certbot поддерживает специальные ключи, которые позволяют выполнять некие действия перед и после запуска утилиты:
Наиболее удобным в использовании является ключ —renew-hook, который будет перезапускать службы только тогда, когда получит новый сертификат, а не два раза в день, как это будет делать —post-hook.
Как использовать данные ключи? В простейшем случае можно просто добавить их к команде продления в cron:
В указанном нами примере будут перезапущены веб-сервер Apache и ftp-сервер vsftpd. Однако разные сертификаты могут быть привязаны к разным службам, поэтому более правильно будет указать эти параметры в конфигурационных файлах в директории renewal. Для этого в секцию [renewalparams] добавьте:
Обратите внимание на синтаксис, который несколько отличается от синтаксиса, используемого при указании в составе команды.
Надеемся, что данный материал поможет вам лучше понять работу Certboot, что в дальнейшем позволит нам не обращаться этой теме, а уделить больше внимания конкретным реализациям защиты c помощью SSL для различных приложений.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:











