Настройка certbot centos 7

Обновлено: 06.07.2024

Здесь вы не найдете подробного описания процесса создания SSL-сертификата, но сможете получить доверенный сертификат, который будет обновляться автоматически. Кроме того, вы сможете автоматизировать перезагрузку сервиса, чтобы он мог получить доступ к новому сертификату.

Требования

1: Установка Certbot

В репозитории EPEL есть пакет Certbot, он достаточно свеж и его можно использовать. Чтобы включить репозиторий EPEL на CentOS 7, запустите следующую команду yum:

sudo yum --enablerepo=extras install epel-release

Затем можно установить пакет certbot:

sudo yum install certbot

Вы можете проверить свою установку, запросив номер версии certbot:

certbot --version
certbot 0.31.0

Теперь у вас есть установка Certbot. Давайте запустим его, чтобы получить сертификат.

2: Запуск Certbot

Сертификаты получены. Давайте подробнее рассмотрим, что именно мы загрузили, и попробуем использовать эти файлы с нашим ПО.

3: Настройка приложения

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

Давайте ознакомимся с файлами, которые загрузил Certbot. Используйте команду ls, чтобы просмотреть каталог, в котором хранятся ключи и сертификаты:

Файл README содержит информацию о каждом из файлов. Обычно нужны только два файла:

  • privkey.pem: закрытый ключ сертификата. Его следует хранить в секрете, поэтому каталог /etc/letsencrypt обычно блокирует доступ, он доступен только root пользователю. Конфигурации программного обеспечения будут ссылаться на этот файл с помощью параметров ssl-certificate-key или ssl-certificate-key-file.
  • fullchain.pem: файл сертификата, связанный с промежуточными сертификатами. Большинство программ ссылается на этот файл как на ssl-certificate.

Некоторые программы требуют, чтобы файлы сертификатов располагались в другом месте, были в другом формате или имели другие привилегии. Лучше всё хранить в каталоге letsencrypt и привилегий не менять (они все равно будут переписаны при обновлении сертификата), но иногда это мешает работе программы. В таком случае нужно написать сценарий для автоматического перемещения файлов и изменения привилегий. Этот сценарий нужно запускать во время обновления сертификатов Certbot.

4: Автоматическое обновление сертификатов Certbot

sudo systemctl enable --now certbot-renew.timer

Created symlink from /etc/systemd/system/timers.target.wants/certbot-renew.timer to /usr/lib/systemd/system/certbot-renew.timer.

Теперь проверьте состояние таймера:

sudo systemctl status certbot-renew.timer
certbot-renew.timer - This is the timer to set the schedule for automated renewals
Loaded: loaded (/usr/lib/systemd/system/certbot-renew.timer; enabled; vendor preset: disabled)
Active: active (waiting) since Fri 2019-05-31 15:10:10 UTC; 48s ago

Таймер должен включиться (в выводе будет active). Теперь Certbot будет автоматически обновлять сертификаты по мере необходимости.

5: Запуск задач после обновления сертификатов

При автоматическом обновлении сертификатов нужно найти способ запускать остальные задачи после этого. Как минимум, вам нужно перезагрузить сервер, чтобы новые сертификаты вступили в силу. Как говорилось в разделе 3, вам также может понадобиться дополнительно обработать файлы сертификатов, чтобы они не конфликтовали с программным обеспечением. Для этого Certbot предлагает опцию renew_hook.

Чтобы добавить ее, обновите конфигурационный файл Certbot в каталоге renewal. Certbot запоминает все сведения о первом сертификате и при обновлении запустится с теми же параметрами. Нужно просто добавить опцию renew_hook в файл. Откройте файл с помощью редактора:

Вставьте в конец файла строку:

renew_hook = systemctl reload rabbitmq

Обновите эту команду и укажите в ней задачи, которые нужно выполнить (например, перезагрузить сервер или запустить сценарий для обработки файлов). Обычно для перезагрузки сервисов в CentOS используют systemctl. Сохраните и закройте файл, затем запустите пробный прогон, чтобы убедиться, что синтаксис не содержит ошибок:

sudo certbot renew --dry-run

Certbot должен обновлять сертификаты по мере необходимости и выполнять все команды для восстановления поддержки новых сертификатов.

Заключение

Теперь вы знаете, как установить Certbot, получить SSL-сертификаты и автоматизировать их обновление.

Ключевые принципы Let’s Encrypt:

2. Как он работает.

На первом этапе агент уведомляет Центр Сертификации о правах администратора сервера на доменное имя. На втором этапе, после подтверждения прав на домен, агент может запрашивать, обновлять и отзывать сертификаты.

2.1. Проверка домена.

Let’s Encrypt идентифицирует web-сервер с запущенным агентом по открытому ключу. Открытый и закрытый ключи генерируются агентом перед первым подключением к Центру сертификации Let’s Encrypt. После подключения агента к Центру Сертификации, создаётся аккаунт администратора сервера. В созданный аккаунт добавляются доменные имена, которыми владеет администратор, аналогично тому, как это происходит в платных Центрах Сертификации.

Одновременно с тестированием прав администратора на домен, Let’s Encrypt проверяет права агента на открытый и закрытый ключи. Let’s Encrypt отправляет агенту одноразовый пароль, который агент должен подписать закрытым ключом и отослать обратно.


Далее, Центр Сертификации проверяет, всё ли было сделано верно: корректную цифровую подпись на одноразовом пароле, возможность скачать созданный файл по URI, а также его содержимое.


2.2. Выпуск и отзыв сертификатов.



3. Основные преимущества.

4. О его недостатках.

В конце нужно отметить, что несмотря на все преимущества данного типа сертификата, существуют недостатки, которые нужно учитывать при выборе SSL:

  • WildCard сертификат для защиты поддоменов определённого домена;
  • Сертификаты OV SSL( Organization Validation), предполагающие проверку не только домена, но и компании;
  • Сертификаты EV SSL (Extended Validation), сертификат с максимальной степенью защиты и зелёной адресной строкой браузера;
  • Multi-Domain сертификат типа UCC.

5. Подготовка и установка утилиты certbot.

5.1. Установка snapd.

Установим EPEL репозиторий:

Установим snapd:

Пропишем автозапуск snapd при старте операционной системы:

Ответ:


Проверим начало работы snapd:

Ответ:


Чтобы включить поддержку snap, требуется создать символическую связь между /var/lib/snap/snap и /snap :

После этого либо выйдите из системы и снова войдите в нее, либо перезагрузите систему, чтобы убедиться, что пути snap связались правильно.

Можно просто создать внутри каталога файл и зайти посмотреть его с обоих путей.

5.2. Убедимся в актуальности snapd.

Выполните следующие инструкции в командной строке.

Ответ:


Убедимся, что у вас установлена последняя версия snapd:

Ответ:


5.3. Удалите certbot-auto и его пакеты.

Для удаления certbot-auto, требуется выполнить следующие действия:

Если вы добавили в cron или systemd таймер автоматического запуска certbot-auto для перевыпуска сертификатов, вам следует удалить все эти настройки.

Если вы это делали по ранее написанным инструкциям, вы можете удалить все задачи в файле /etc/crontab .

Возможно, что там будет нечто похожее на это:

Удалите скрипт certbot-auto, обычно он располагается вот здесь /usr/local/bin :

Вывод действий в консоли:


5.4. Установка утилиты certbot.

Если вы проделали все действия без ошибок, описанные выше по тексту, то смело можете приступать к дальнейшей установке certbot с помощью snapd:

Ответ:


5.4. Подготовка утилиты certbot.

Выполните следующую команду в командной строке, чтобы создать ссылку на утилиту certbot:

6. Получение бесплатного ssl-сертификата.

Наша следующая задача — получить бесплатные сертификаты.

Для этого временно остановим nginx, если он вдруг оказался запущен и подтвердим владение доменами с помощью temporary webserver, который certbot поднимет сам на время верификации доменов.

После того, как получили сертификаты, можно проверить конфиг nginx и запустить его. Ошибок быть не должно. Если они есть, то разбирайтесь с ними, возможно где-то ошиблись и допустили простые досадные опечатки.

Настройка nginx на этом завершена. Он должен корректно запуститься, подхватить сертификаты, указанные в файлах конфигурации nginx, и начать работать в обычном режиме.

7. Список установленных сертификатов.

Для просмотра всего что генерировал вам Let’s Encrypt введите команду:

Ответ: длинный список ваших сертификатов.

8. Автоматическое обновление ssl-сертификата.

Теперь сделаем так, чтобы сертификаты автоматически обновлялись перед истечением срока действия:

Настроим автоматический выпуск новых ssl сертификатов, взамен просроченных путем помещения команды certbot renew --dry-run куда-нибудь по смыслу в эти модули:

Установка certbot и плагинов

Нам нет смысла ставить последнюю версию certbot с github, т.к. нужный нам функционал появился еще в версии 0.22.

Для установки certbot и его плагинов нужно подключить репозиторий EPEL.


После чего запустить установку certbot.


И затем установить CloudFlare плагин для certbot.

Если вы используете другой сервис, найдите его плагин при помощи yum, например для digitalocean yum list *digitalocean*

Запустите certbot один раз для создания конфигов.

Настройка CloudFlare API

Для того, чтобы certbot мог автоматом продливать wildcard-сертификаты, нужно указать логин аккаунта CloudFlare и его API Key в конфиге.

Логинимся в свой CloudFlare аккаунт и заходим в профиль





Вводим пароль от аккаунта, проходим капчу и снова жмем View





Создаем файл cloudflareapi.cfg в директории /etc/letsencrypt при помощи редактора (например nano):


И пишем в нём следующее:

АХТУНГ! Данный способ хранения API Key небезопасен, но т.к. вы используете Let's Encrypt вам должно быть все равно.

По крайней мере, можете прописать sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg для ограничения доступа на чтение.

Создание сертификата

При первом запуске certbot может запросить у вас email-адрес для доставки уведомлений, согласиться с ToS (выбрать A) и одобрить получение спама (выбрать N).
Вот и всё, в случае успеха вы увидите что-то вроде этого

Настройка веб-сервера

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

Вы сами должны найти настройку SSL для вашей версии веб-сервера и CMS.

Продление сертификата

Все созданные сертификаты продливаются при помощи certbot.


Собственно, открываем /etc/crontab.


И добавляем строчку.


Которая означает, что каждый вторник в 4 часа проверять актуальность сертификатов через certbot.

Так же, сюда следует добавить рестарт веб-сервера, который будет использовать данный сертификат, например nginx:

Заключение

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

Данный мануал предназначен в первую очередь для энтузиастов под свой сервер или под небольшие проекты, поэтому здесь нет особого внимания к безопасности или дополнительным настройкам.

Favorite

Добавить в избранное (3 оценок, среднее: 5,00 из 5)

Предпосылки

Перед продолжением этой статьи, убедитесь, что вы выполнили следующие предварительные условия:

Установите следующие пакеты, которые необходимы для SSL-зашифрованного веб-сервера:

Установка Certbot

Пакет certbot предоставляется EPEL. Если репозиторий EPEL не установлен в вашей системе, вы можете установить его, используя следующую команду:

После того, как репозиторий EPEL включен, установите пакет certbot, введя:

Создание Dh (Диффи-Хеллман)

Вы можете изменить размер до 4096 бит, но в этом случае генерация может занять более 30 минут в зависимости от энтропии системы.

Получение сертификата SSL для шифрования

Следующие команды создадут каталог и сделают его доступным для записи на сервере Apache.

Чтобы избежать дублирования кода, создайте следующие два фрагмента конфигурации:

Перезагрузите конфигурацию Apache, чтобы изменения вступили в силу:

Теперь мы можем запустить средство Certbot с помощью плагина webroot и получить файлы SSL сертификатов, набрав:

CentOS 7 поставляется с Apache версии 2.4.6, которая не включает директиву SSLOpenSSLConfCmd . Эта директива доступна только на Apache позже 2.4.8 и используется для настройки параметров OpenSSL, таких как обмен ключами Diffie-Hellman (DH).

Теперь, когда все настроено, отредактируйте конфигурацию виртуального хоста домена следующим образом:

Перезапустите службу Apache, чтобы изменения вступили в силу:

Если вы протестируете свой домен с помощью теста SSL Labs Server, вы получите оценку A +, как показано ниже:

Безопасный Apache с Let

Автоматическое обновление Шифрование SSL-сертификата

Сертификаты Encrypt действительны в течение 90 дней. Чтобы автоматически продлить срок действия сертификатов до истечения срока их действия, мы создадим cronjob, который будет работать два раза в день и автоматически обновит сертификат за 30 дней до истечения срока его действия.

Запустите команду crontab для создания нового cronjob, который обновит сертификат, создаст новый комбинированный файл, включая ключ DH, и перезапустит apache:

Чтобы протестировать процесс обновления, вы можете использовать переключатель --dry-run в certbot:

Если ошибок нет, это означает, что процесс обновления был успешным.

Вывод

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: