Поиск по сайту:

Как управлять сертификатами Lets Encrypt SSL/TLS с помощью certbot


На этой странице

  1. Требования
  2. Общие понятия
    1. Режимы работы
    2. Вызовы
    3. Плагины

    1. Сертификаты листинга
    2. Получение сертификата для ручной настройки
    3. Интерактивная установка HTTPS
    4. Обновление сертификатов
    5. Отзыв сертификатов
    6. Подстановочные сертификаты

    Lets Encrypt — это автоматизированный и открытый центр сертификации (CA), управляемый Исследовательской группой по безопасности в Интернете (ISRG) и основанный Electronic Frontier Foundation (EFF), Mozilla Foundation и другими. Он предоставляет бесплатные сертификаты SSL/TLS, которые обычно используются для шифрования сообщений в целях безопасности и конфиденциальности, наиболее заметным вариантом использования является HTTPS. Lets Encrypt использует протокол ACME (автоматическая среда управления сертификатами) для выдачи, отзыва и обновления сертификатов. Certbot — это бесплатная утилита с открытым исходным кодом, которая в основном используется для управления сертификатами SSL/TLS от центра сертификации Lets Encrypt. Он доступен для большинства UNIX и UNIX-подобных операционных систем, включая GNU/Linux, FreeBSD, OpenBSD и OS X. Это руководство представляет собой введение в использование certbot независимо от платформы.

    ПРИМЕЧАНИЕ. Поскольку certbot находится в стадии разработки, некоторые функции или поведение, описанные в этом руководстве, могут отличаться в более ранних или будущих выпусках.

    Требования

    • Зарегистрированное доменное имя с записью A, указывающей на ваш адрес IPv4. \\www.example.com\\ будет использоваться в качестве примера.
    • Доступ к привилегированной оболочке.

    Общие понятия

    Режимы работы

    Использование certbot для включения HTTPS можно разделить на две части: аутентификация и установка. Первый требует решения задачи и сохранения сертификата и других файлов. Шаг установки включает в себя настройку и защиту веб-сервера. Certbot может автоматически выполнять оба действия с помощью подкоманды run. Подкоманды certonly и install предназначены для аутентификации и установки соответственно.

    Certbot также включает функции обновления и отзыва сертификатов.

    Проблемы

    Получение сертификата Lets Encrypt включает в себя решение задачи проверки домена, выдаваемой сервером ACME (автоматическая среда управления сертификатами). Эта задача подтверждает ваше право собственности на домен(ы), для которых вы пытаетесь получить сертификат. Существуют различные типы вызовов, наиболее часто используемым из которых является HTTP-01. Как следует из названия, он использует протокол HTTP. Хотя HTTP-серверы могут быть настроены на использование любого порта TCP, эта задача будет работать только на порту 80 из-за мер безопасности. DNS-01 — еще один, менее популярный тип запроса, основанный на разрешении DNS. Обратите внимание, что групповые сертификаты нельзя получить с помощью запроса HTTP-01. В этом руководстве основное внимание будет уделено HTTP-01.

    Плагины

    Certbot использует плагины для аутентификации и установки. Плагины, такие как webroot и автономный, выполняют только аутентификацию, в то время как другие, такие как плагины Apache и Nginx, предназначены для автоматического получения и установки сертификатов (т. е. конфигурации веб-сервера). Другие подключаемые модули включают в себя несколько подключаемых модулей DNS, специфичных для поставщиков, для аутентификации DNS-01. Большинство плагинов certbot устанавливаются отдельно, за исключением встроенных плагинов webroot и автономных.

    Установка Сертбота

    Большинство дистрибутивов Linux предоставляют certbot в своих официальных репозиториях. Ниже приведены инструкции по установке для широко используемых платформ.

    Дебиан и Убунту:

    apt update
    apt install -y certbot

    ЦенОС 7:

    yum install -y certbot

    Fedora и CentOS 8:

    dnf install -y certbot

    Арх Линукс:

    pacman -Sy certbot

    FreeBSD:

    pkg install py36-certbot

    OpenBSD 6.0 и выше:

    pkg_add certbot

    MacOS (требуется доморощенный):

    brew install letsencrypt

    Другой:

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

    Использование Certbot

    Список сертификатов

    Чтобы отобразить список сертификатов, управляемых certbot на вашем сервере, введите команду:

    certbot certificates

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

    Если вы решите настроить веб-сервер вручную, получить сертификат можно двумя способами. Либо предоставив certbot доступ к корневому веб-каталогу вашего сервера (т. е. плагин webroot), либо развернув временный автономный веб-сервер на порту 80 (т. е. автономный плагин). Последний плагин полезен в тех случаях, когда интеграция с вашим существующим веб-сервером невозможна или нежелательна. Для удобства и простоты продления следите за используемым плагином.

    Использование существующего веб-сервера

    Чтобы использовать существующий веб-сервер, убедитесь, что он работает и прослушивает порт 80, прежде чем выполнять следующую команду.

    certbot certonly --webroot
    

    Вам будет предложено ввести, среди прочего, ваше доменное имя (имена) и путь к вашему веб-сайту, который по умолчанию \\/var/www/html/\\ в большинстве систем Linux. Кроме того, вы можете указать необходимую информацию в качестве аргументов команды. Например:

    certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m  -d www.example.com
    

    Использование автономного веб-сервера

    Чтобы использовать автономный сервер, сначала убедитесь в доступности порта 80. Вы можете проверить наличие каких-либо процессов, привязанных к этому порту, используя:

    ss -lntp 'sport = 80'
    

    При необходимости остановите вызывающую нарушение службу/процесс, прежде чем продолжить. Затем введите команду:

    certbot certonly --standalone
    

    После выдачи сертификата вам нужно будет настроить веб-сервер вручную. Соответствующие файлы можно найти в /etc/letsencrypt/live/your_domain.

    Интерактивная установка HTTPS

    Как упоминалось ранее, certbot может автоматизировать весь процесс настройки HTTPS, включая настройку веб-сервера. Плагины доступны как для Apache, так и для Nginx, и их может потребоваться установить в виде отдельного пакета. Установите подключаемый модуль certbot для вашего веб-сервера, затем выполните \\certbot run --PLUGIN_NAME\\. Хорошо продемонстрируйте весь процесс для Apache в системе Debian 10. Процесс для Nginx аналогичен.

    apt install -y python-certbot-apache
    certbot run --apache
    

    Предполагая, что ваш веб-сервер уже настроен для ваших доменных имен, certbot проанализирует существующую конфигурацию и предложит вам выбрать, для каких доменных имен следует активировать HTTPS. Если ваш веб-сервер не настроен или если certbot не может определить ваши доменные имена, просто введите ваши доменные имена вручную при появлении запроса. Например:

    Which names would you like to activate HTTPS for?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1: www.example.com
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Select the appropriate numbers separated by commas and/or spaces, or leave input
    blank to select all options shown (Enter 'c' to cancel): 1

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

    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1: No redirect - Make no further changes to the webserver configuration.
    2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
    new sites, or if you're confident your site works on HTTPS. You can undo this
    change by editing your web server's configuration.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
    Enabled Apache rewrite module
    Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Congratulations! You have successfully enabled https://www.example.com
    

    Обновление сертификатов

    Ручное продление

    Чтобы обновить сертификаты с помощью certbot, вы можете использовать подкоманду renew. Во время продления certbot будет использовать те же плагины и опции, что и при первоначальном выпуске. Сертификаты обновляются только в том случае, если срок их действия истекает менее чем через 30 дней, поэтому эту подкоманду можно использовать сколь угодно часто, так как она не будет предпринимать никаких действий, если срок действия сертификатов еще не истек. Команда проста:

    certbot renew
    

    Если для выдачи сертификата использовался автономный подключаемый модуль, вам потребуется остановить веб-сервер, чтобы обновление прошло успешно. Вы можете сделать это, используя хуки. Например, если в системе работает Apache, команда будет такой:

    certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"
    

    Автоматическое продление

    Во многих дистрибутивах по умолчанию включено автоматическое обновление либо через системные таймеры, либо через задания cron. Вы можете проверить системные таймеры с помощью:

    systemctl list-timers
    

    И для заданий cron с использованием:

    ls /etc/cron*
    

    Если для выдачи использовался подключаемый модуль webroot, автоматическое продление должно выполняться до тех пор, пока работает ваш веб-сервер. Однако с автономным плагином команда автоматического обновления по умолчанию не будет работать, если веб-сервер работает, поскольку certbot не сможет привязаться к порту 80. Следовательно, необходимо изменить его с добавлением перехватчиков, как показано выше.

    Отзыв сертификатов

    Отозвать сертификат можно, указав путь или имя сертификата:

    certbot revoke --cert-name cert_name
    (OR)
    certbot revoke --cert-path /path/to/cert.pem
    

    Например:

    certbot revoke --cert-name www.example.net
    

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

    • --delete-after-revoke (по умолчанию запрашивает выбор пользователя)
    • --no-delete-after-revoke (по умолчанию запрашивает выбор пользователя)
    • --reason [не указано, компрометация ключа, принадлежность изменена, заменена, прекращение работы] (по умолчанию: не указано)

    Подстановочные сертификаты

    Один подстановочный сертификат может использоваться для идентификации нескольких поддоменов в качестве альтернативы отдельным обычным сертификатам. Чтобы получить подстановочный сертификат, необходимо использовать вызов DNS-01. Хотя доступно несколько подключаемых модулей для конкретных поставщиков, которые автоматизируют процесс аутентификации ACME, мы объясним ручной, независимый от поставщиков процесс. Необходим доступ к серверам имен для вашего домена.

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

    certbot certonly --manual --preferred-challenges dns-01 -d *.example.net
    

    Certbot отобразит значение, которое должно быть развернуто в записи DNS TXT. Эта запись TXT служит необходимым подтверждением права собственности.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Please deploy a DNS TXT record under the name
    _acme-challenge.example.net with the following value:
    y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
    Before continuing, verify the record is deployed.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Press Enter to Continue
    

    Прежде чем продолжить, вам нужно будет создать указанную запись в панели управления DNS. После создания записи подождите несколько минут, прежде чем нажать Enter, после чего сервер ACME проверит ее. В некоторых случаях может потребоваться более длительное время ожидания, чтобы новая запись правильно распространилась и стала доступной. В случае успеха сертификат, цепочка и закрытый ключ будут сохранены в /etc/letsencrypt/live/example.com/.

    Ссылки и дополнительная информация

    • Официальный репозиторий Certbot на Github.
    • Среда автоматического управления сертификатами (ACME) RFC 8555
    • Документация по EFF Certbot
    • Справочная страница Certbot(1)