Настройка certbot centos 7
Здесь вы не найдете подробного описания процесса создания 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 аккаунт и заходим в профиль
Создаем файл 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:
Заключение
Настройка простая, но забыть её довольно легко. Поэтому сохраняйте в закладки.
Данный мануал предназначен в первую очередь для энтузиастов под свой сервер или под небольшие проекты, поэтому здесь нет особого внимания к безопасности или дополнительным настройкам.
Предпосылки
Перед продолжением этой статьи, убедитесь, что вы выполнили следующие предварительные условия:
Установите следующие пакеты, которые необходимы для 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 +, как показано ниже:
Автоматическое обновление Шифрование SSL-сертификата
Сертификаты Encrypt действительны в течение 90 дней. Чтобы автоматически продлить срок действия сертификатов до истечения срока их действия, мы создадим cronjob, который будет работать два раза в день и автоматически обновит сертификат за 30 дней до истечения срока его действия.
Запустите команду crontab для создания нового cronjob, который обновит сертификат, создаст новый комбинированный файл, включая ключ DH, и перезапустит apache:
Чтобы протестировать процесс обновления, вы можете использовать переключатель --dry-run в certbot:
Если ошибок нет, это означает, что процесс обновления был успешным.
Вывод
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Читайте также: