How to Use — and Why You Need — Let’s Encrypt More Than Ever

How to Use — and Why You Need — Let’s Encrypt More Than Ever Хостинг

By: Steven J. Vaughan-Nichols

30 ноября 2020

Let’s Encrypt — это глобальный некоммерческий центр сертификации, который начал работу с две тысячи пятнадцатого года. Выпускает криптографические сертификаты для TLS-шифрования (HTTPS). В этой статье мы расскажем, зачем нужны SSL-сертификаты, какие преимущества и недостатки у сертификата от Let’s Encrypt. Начнем!

сертификационный центр, который выдает бесплатные SSL (TLS) сертификаты. Проект был поддержан большим числом IT-компаний, в связи с чем, выданные сертификаты поддерживаются многими операционными системами (есть доверие к центру сертификации). Начало работы — декабрь 2015 года. Официальный сайт — letsencrypt.org.

Ключи выдаются сроком на 90 дней. Есть возможность получить сертификат как в ручном режиме, так и автоматическом (с помощью утилиты certboot). Штатно, процесс получения реализован на системах UNIX, а под Windows есть неофициальная утилита, которая также позволит получить и/или обновить сертификат. Во время установки сертификата для домена, центр Let’s Encrypt проверяет, что мы являемся легитимным владельцем последнего — для этого выполняется http-запрос к сгенерированному файлу на нашем веб-сервере и если он может обработать такой запрос, значит мы имеем право на использование домена.

Область применения данных сертификатов такая же, как у платных, например, для веб-серверов Nginx и Apache или для почтовой системы. Запрашивать ключи необходимо для указанных явно доменов (можно несколько в одном сертификате) или для всех поддоменов (Wildcard).

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

  • Маленький период действия (хорошо, что есть возможность автоматического продления).
  • Неудобный метод автоматического продления сертификатов Wildcard.
  • Не работает для Ipv6.
  • Бесплатно.
  • Высокая степень защиты.

Подробнее о Let’s Encrypt на Википедии и Хабрахабре.

Содержание
  1. Wildcard
  2. Certbot
  3. Процесс получения
  4. Протоколы
  5. HTTPS
  6. TLS handshake
  7. MTLS
  8. Проверка домена
  9. Настройка веб-сервера
  10. Linux NGINX
  11. Linux Apache
  12. Windows
  13. С помощью записи в DNS
  14. Использование CA Let’s Encrypt
  15. Установка утилиты для получения сертификата
  16. LetsEncrypt-Win-Simple для Windows
  17. Термины
  18. CA (Certificate Authority)
  19. 509 certificate
  20. Certificate chain / certificate path validation
  21. Первое получение сертификата
  22. Возможные ошибки
  23. Missing command line flag or config entry for this setting
  24. ACMEv1 is deprecated and you can no longer get certificates from this endpoint
  25. Автоматическое продление
  26. Выпуск и настройка сертификата для веб-серверов Apache и Nginx
  27. Для веб-сервера Apache
  28. Обновление сертификатов
  29. Для веб-сервера Nginx
  30. Выпуск и настройка сертификата для панели управления VestaCP
  31. Решение возможных проблем
  32. Сертификат Let’s Encrypt для почтового сервера MS Exchange
  33. Условия получения бесплатного сертификата от Let’s Encrypt
  34. Получение бесплатного SSL сертификата Let’s Encrypt
  35. Зачем нужен SSL-сертификат Let’s Encrypt
  36. Как работает SSL
  37. Преимущества Let’s Encrypt
  38. Недостатки Let’s Encrypt
  39. Платные аналоги
  40. Анонс
  41. The free, automated and open certificate authority confers all sorts of benefits to your website.
  42. Заключение

Wildcard

  • Подтвердить право использования доменом можно только с помощью DNS — таким образом, затрудняется процесс автоматического продления. Нужно использовать плагины, которые позволяют автоматически создавать нужную запись на DNS, но они доступны далеко не для всех поставщиков услуг DNS. В противном случае, обновлять Wildcard нужно вручную.
    Также, некоторые панели управления хостингом, например ISP Manager с версии 5 могут управлять процессом получения Wildcard от Let’s Encrypt с возможностью автоматического продления (но необходимо, чтобы домен обслуживался на данном хостинге).
  • Время действия сертификата также ограничено 3 месяцами.

Certbot

Необходимо, чтобы версия утилиты certbot была 0.22.0 и выше. Проверить текущую версию можно командой:

а) для CentOS / Red Hat:

б) для Ubuntu / Debian:

apt install —only-upgrade certbot

Процесс получения

Процесс очень похож на процесс получения сертификата с подтверждением домена в DNS.

* обратим внимание на 2 детали: 1) мы добавили опцию server, чтобы указать, на каком сервере Let’s Encrypt должна проходить проверка DNS; 2) мы получаем сертификат как для *.dmosk.ru, так и самого dmosk.ru, так как первое не включает второго.

Before continuing, verify the record is deployed.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

* в данном примере система попросила создать TXT-запись _acme-challenge.dmosk.ru со значением DN8ovKFJ0leLQV9ofZ81mYKxojwIaed5g6f0bXZCYiI.

Заходим в панель управления DNS и создаем нужную запись. Если у нас свой сервер DNS, например, bind, то строка будет такой:

; TXT
_acme-challenge IN      TXT     DN8ovKFJ0leLQV9ofZ81mYKxojwIaed5g6f0bXZCYiI

Не торопимся нажимать Enter — после настройки DNS нужно немного времени (пару минут), чтобы настройка применилась. Проверить появление записи можно командой с рабочего компьютера:

nslookup -type=txt _acme-challenge.dmosk.ru 8.8.8.8

Как только видим, что настройки применились, нажимаем Enter — если это наш первый запрос Wildcard для данного домена, то система нас попросит создать еще одну запись — повторяем процедуру, создав в DNS вторую запись TXT.

Если все сделали правильно, то увидим:

IMPORTANT NOTES:
 — Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/dmosk.ru/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/dmosk.ru/privkey.pem
   Your cert will expire on 2019-09-05. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   «certbot renew»
 — If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

После получения сертификата мы не сможем экспортировать его с закрытым ключом. Мы можем изменить поведение, открыв файл settings.json в распакованном каталоге win-acme. Находим параметр PrivateKeyExportable и задаем ему значение:

После обновляем сертификат:

.wacs.exe —renew —force

Или без обновления сертификата мы можем найти файл .pfx в каталоге: %programdata%win-acme$baseuri$certificates.

Пароль для pfx можно найти в интерактивном меню wacs:

Протоколы

В стандартах название SSL протокола было заменено на TLS в 1999 году, но до сих пор используется как синоним технологии. Наиболее актуальный стандарт TLS 1.3, опубликованный в 2018. TLS обеспечивает три главных принципа безопасного обмена данными:

  • Сonfidentiality — конфиденциальность данных обеспечивается шифрованием трафика между браузером и сайтом.
  • Authentication — аутентификация сайта. CA выдает сертификаты для сайтов, к которым у владельца сертификата действительно есть доступ. Для этой проверки могут использоваться разные механизмы. Например, во время процесса выдачи сертификата владельцу сайта может быть предложено поместить по определенному адресу на сайте файлы с определенным содержанием.
  • Integrity — целостность или защита от изменения данных. Эта защита является частью алгоритма обмена шифрованными данными, при котором в сообщение включается MAC (message authentication code).

HTTPS

Если трафик HTTP шифруется и передается с помощью протокола TLS, то он называется HTTPS. При этом шифруются как сами данные, так и HTTP заголовки.

TLS handshake

Для установления TLS соединения используется процесс, который называется TLS handshake. В TLS handshake участвуют клиент (браузер или web-приложение) и HTTPS сервер. Алгоритм установки HTTPS соединения следующий:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

MTLS

mTLS (Mutual TLS ) — это дополнительный шаг установки TLS соединения, при котором происходит проверка сервером клиентского сертификата. Подробнее этот процесс разберем на практике в следующей статье: «Практика на примере OpenSSL и CA Smallstep».

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

Как было сказано выше, для получения бесплатного сертификата, Let’s Encrypt должен удостовериться, что мы являемся владельцем домена. Свое право на его владение мы можем подтвердить, создав специальную TXT-запись или настроив веб-сервис, который будет отвечать на запросы.

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

Данный способ немного сложнее для Linux (для Windows все настройки делает утилита автоматически), но позволяет без проблем настроить автоматическое продление.

Запрашивать сертификат Let’s Encrypt проще всего с веб-сервера, на котором запущен сайт для домена. Возможен альтернативный вариант с монтирование сетевой папки, но его рассматривать не будем.

Linux NGINX

Пример простого конфигурационного файла для NGINX:

Если сервер уже используется для сайта, в секцию server добавляем:

При необходимости выполнять проверку и использовать rewrite/return, добавляем что-то подобное:

После проверяем конфигурацию и перезапускаем nginx:

nginx -t && nginx -s reload

Linux Apache

Создаем общий конфигурационный файл, в котором пропишем алиас.

а) для CentOS:

Со следующим содержимым:

Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/

* в данном примере, запросы для страниц /.well-known/acme-challenge всех сайтов мы переводим в каталог /var/www/html/.well-known/acme-challenge.

Проверяем корректность конфигурационного файла:

И перезапускаем apache:

Windows

IIS должен отвечать на http-запрос до доменному имени, для которого мы планируем получить сертификат. Также в его настройках мы должны сделать привязку узла, для которого хотим получить сертификат к конкретному сайту. Для этого в консоли управления IIS раскрываем сайты и выбираем нужный нам (в данном примере, он всего один):

How to Use — and Why You Need — Let’s Encrypt More Than Ever

В меню справа кликаем по Привязки:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Изменяем привязку для имеющийся записи и, при необходимости, добавляем еще:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Применяем настройки и закрываем консоль управления IIS.

С помощью записи в DNS

Данный метод проще, описанного выше, но он позволит настроить автоматическое продление сертификата только для некоторых DNS, для которых есть отдельные certbot-плагины. Поэтому данный способ, в большинстве случаев, будет удобен для проведения тестов.

Использование CA Let’s Encrypt

Теперь запросим бесплатный сертификат из удостоверяющего центра Let’s Encrypt и разберём процесс организации HTTPS соединения между браузером и моим сайтом https://sushkov.ru. На схеме показана топология CA Let’s Encrypt и процесс получения  сертификатов:

  • Корневой приватный ключ для корневого сертификата «ISRG Root X1» хранится offline, им подписываются intermediate сертификаты, в Let’s Encrypt их несколько. R3 — один из них.
  • С помощью intermediate ключей уже подписываются конечные (endpoint) сертификаты.

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Предусловия для работоспособности сценария:

0. Корневой сертификат Let’s Encrypt должен быть помещен в браузер в список «Trusted Root Certification Authorities». Это мы уже уже видели.

1. Первым шагом владелец сайта запускает утилиту certbot, которая взаимодействует с его сайтом и CA Let’s Encrypt.

2. Certbot просит владельца поместить два файла с определенными именами и содержимом по указанному адресу на сайте.  Если владелец это сделал, значит он подтвердил, что имеет к нему доступ. Пример запроса для одного из файлов:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

3. Certbot проверяет наличие файлов.

4. Certbot генерирует приватный ключ, публичный ключ и запрос на сертификат (CSR) и отправляет его на подпись CA Let’s Encrypt.

Читайте также:  Раскрытие потенциала: советы экспертов по установке телефонии Asterix

5. CA подписывает сертификат своим приватным ключом и возвращает в сertbot.

6. После этого владелец помещает сертификат и приватный ключ на сайт. Как конкретно это происходит зависит от платформы, на которой хостится сайт. Пример загрузки сертификата и приватного ключа у провайдера RU-CENTER:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

7. Теперь при доступе из браузера к сайту https://sushkov.ru будет устанавливаться TLS соединение .

8. Обмен данными происходит по шифрованному каналу.

Проверить сертификат сайта может каждый. Для этого надо нажать на замочек в адресной строке и посмотреть сертификат, в котором, как уже обсуждалось в начале статьи, главное — это кто, кому и на какой срок его выдал. Если эти поля соответствуют действительности, то вы находитесь на правильном сайте:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Тут же можно посмотреть на цепочку сертификатов:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

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

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Это вывод сайта компании DigiCert:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Установка утилиты для получения сертификата

1) Rocky Linux:

dnf install epel-release

2) на CentOS 8:

dnf —enablerepo=powertools install certbot

3) на CentOS 7:

yum install certbot

4) на Ubuntu 16.04 и выше, а также Debian:

5) на CentOS 6 или Ubuntu 14.04 / 12.04:

Создадим каталог, в котором будет храниться утилита и переходим в него:

Загружаем утилиту и разрешаем ее запуск:

chmod a+x ./letsencrypt-auto

Для удобства, делаем симлинк:

ln -s /opt/certbot/letsencrypt-auto /usr/local/sbin/certbot

При первом запуске certbot он автоматически предложит доустановить необходимые зависимости — соглашаемся.

LetsEncrypt-Win-Simple для Windows

На сайте GitHub скачиваем win-acme pluggable для нужной разрядности операционной системы:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Раcпаковываем скачанный архив в любую папку.

Термины

Системы PKI построены на криптографии, которая использует пару ключей: публичный (public key) и приватный (private key). Глобальная цель систем PKI — связать пользователей и соответствующие публичные ключи. Пользователями могут быть как реальные люди, так и IP адреса устройств, доменные имена компьютеров и т.д. Разбор принципов криптографии выходит за рамки данной статьи, но для наших целей важно понимать несколько принципов:

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

CA (Certificate Authority)

Главным элементом систем PKI является удостоверяющий центр (УЦ) — это организация, которая выдает цифровые сертификаты пользователям. С удостоверяющим центром можно взаимодействовать как в ручном режиме, так и организовывать автоматическое получение сертификатов. Для автоматического взаимодействия существует ряд протоколов, перечислю их без подробностей:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Теперь запускаем браузер Firefox, заходим в хранилище сертификатов (меню Settings / Privacy & Security / View Certificates) и видим тот же корневой сертификат с тем же хешом (fingerprint):

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Эта проверка доказывает, что в нашем браузере находится именно тот корневой сертификат, который поместила компания Mozilla, а не злоумышленник.

509 certificate

Факты которые необходимо знать про сертификаты:

  • Сертификаты, которые относятся к удостоверяющим центрам, называются корневыми (root certificates) или промежуточными (intermediate certificates) в зависимости от типа CA.
  • Приватным ключом корневого CA можно подписывать как сертификаты промежуточных CA, так и сертификаты конечных точек (end-point). Обычно конечные сертификаты подписываются приватными ключами промежуточных CA.
  • Приватными ключами конечных точек нельзя подписывать другие сертификаты.
  • Сертификаты выдаются в формате X.509:Такой сертификат содержит структуру данных, которая состоит из идентификационных данных (Identity), дополнительных расширений (Extensions) и публичного ключа (Public Key) его владельца.Сертификат подписывается корневым или промежуточным CA и его подпись связывает Identity владельца с его публичным ключом.
  • Такой сертификат содержит структуру данных, которая состоит из идентификационных данных (Identity), дополнительных расширений (Extensions) и публичного ключа (Public Key) его владельца.
  • Сертификат подписывается корневым или промежуточным CA и его подпись связывает Identity владельца с его публичным ключом.

Схематично X.509 сертификат имеет следующую структуру:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Рассмотрим подробнее атрибуты сертификата. Для просмотра информации о сертификате сайта есть как онлайн средства, о которых поговорим далее, так и офлайн утилиты. Здесь приведу вывод утилиты OpenSSL, которая доступна для всех популярных операционных систем и будет подробно рассмотрена в следующей статье: «Практика на примере OpenSSL и CA Smallstep». Для примера посмотрим на сертификат моего сайта:

Главные атрибуты, на которые надо обратить внимание при просмотре сертификата — это кто, кому и на какой срок выдал сертификат:

Issuer: C=US,O=Let’s Encrypt,CN=R3

X509v3 Subject Alternative Name: DNS:sushkov.ru, DNS:www.sushkov.ru

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Остальные поля не столь наглядны и, в основном, используются для установки безопасного HTTPS соединения с сайтом:

X509v3 Key Usage:  Digital Signature, Key Encipherment

X509v3 Extended Key Usage: Server Authentication, Client Authentication

X509v3 Basic Constraints: CA:FALSE

Subject Public Key: / блок с бинарными данными /

X509v3 Subject Key Identifier: / блок с бинарными данными /

X509v3 Authority Key Identifier: / блок с бинарными данными /

OCSP — URI:http://r3.o.lencr.org

CA Issuers — URI:http://r3.i.lencr.org/

RFC6962 Certificate Transparency SCT

Signature Algorithm: SHA256-RSA / блок с бинарными данными /

Certificate chain / certificate path validation

  • Цепочкой сертификатов называют последовательность из корневого сертификата CA, промежуточного сертификата CA и конечного сертификата CA.
  • Обычно конечный сертификат подписан приватным ключом промежуточного CA, сертификат промежуточного CA подписан приватным ключом корневого CA, сертификат корневого CA подписан собственным приватным ключом. Таким образом корневой сертификат является самоподписанным сертификатом (Self-signed certificate) и в нем совпадают Issuer name и Subject name.
  • В общем случае может быть несколько промежуточных CA, но это сильно усложняет топологию.
  • Для установления HTTPS соединения сайт может посылать браузеру как цепочку из промежуточного и конечного сертификата, так и только конечный сертификат. В любом случае при установке HTTPS соединения (TLS handshake) браузер должен проверить всю цепочку до корневого сертификата в своем списке доверенных корневых удостоверяющих центров (Trusted Root Certification Authorities). Этот процесс называется certificate path validation. Пример проверки цепочки сертификатов для моего сайта можно посмотреть на сайтах, которые специализируются на проверке сертификатов, например, сайт показывает полную цепочку сертификатов :Под номером 1 идет конечный сертификат для сайта sushkov.ruНомер 2 — промежуточный сертификат CAНомер 3 — корневой сертификат CA находится в списке доверенных удостоверяющих центров:
  • Под номером 1 идет конечный сертификат для сайта sushkov.ru
  • Номер 2 — промежуточный сертификат CA
  • Номер 3 — корневой сертификат CA находится в списке доверенных удостоверяющих центров:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

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

1. Если мы подтверждаем право на домен при помощи веб-сервера, выполняем команду с таким синтаксисом:

  • certonly — запрос нового сертификата;
  • webroot — проверка будет выполняться на основе запроса к корню сайта;
  • agree-tos — даем согласие на лицензионное соглашение;
  • email — почтовый адрес администратора домена;
  • webroot-path — каталог в системе Linux, который является корневым для сайта;
  • d — перечисление доменов, для которых запрашиваем сертификат.

а) Пример запроса при использовании веб-сервера NGINX:

б) Пример запроса при использовании веб-сервера Apache:

После успешного выполнения команды, сертификаты будут созданы в каталоге /etc/letsencrypt/archive/dmosk.ru, а также симлинки на них в каталоге /etc/letsencrypt/live/dmosk.ru. При настройке приложений, стоит указывать пути до симлинков, так как при обновлении файлы в первом каталоге будут меняться, во втором — нет. Публичный ключ будет с именем cert.pem, а приватный — privkey.pem.

2. При подтверждении права на домен с TXT-записью:

  • certonly — запрос нового сертификата;
  • manual — проверка домена вручную.
  • preferred-challenges — указывает метод проверки домена.
  • agree-tos — даем согласие на лицензионное соглашение;
  • email — почтовый адрес администратора домена;
  • d — перечисление доменов, для которых запрашиваем сертификат.

На запрос подтверждения отвечаем Y — система выдаст что-то на подобие:

Once this is deployed,

* Данное сообщение говорит, что мы должны создать TXT-запись _acme-challenge.dmosk.ru со значением W2SC9b88y2j2oUjhxVgS7Bphph9g5PqhkBq9KiWkLTm.

Создаем соответствующую запись в панели управления DNS, и в консоли сервера нажимаем Enter для продолжения. Если, как в данном примере, мы запрашиваем сертификат для нескольких узлов, повторяем действия.

Открываем командную строку от администратора и переходим в распакованный каталог. Например, если архив распакован на диск C, выполняем:

* где 2.1.6.773.x64 — моя версия утилиты.

Если запускаем в Powershel, то так:

Утилита формирует бинарный сертификат для Windows, но если мы хотим получить файлы в формате pem, вводим:

wacs.exe —store pemfiles —pemfilespath C:Certificates

* где pemfilespath — путь до каталога, в котором должны оказаться файлы сертификата.

Откроется меню с выбором действия — вводим N, чтобы создать новый сертификат:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Обратите внимание, что в зависимости от версии win-acme, некоторые пункты могут отличаться. Внимательно просмотрите варианты.

Выбираем сайт в IIS, который отвечает на запросы нашего домена (в нашем случае, это единственный Default Web Site, то есть 1):

How to Use — and Why You Need — Let’s Encrypt More Than Ever

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

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Вводим email адрес и подтверждаем корректность данных:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Утилита создаст необходимый каталог для проверки домена, запросит проверку, получит сертификат, добавит привязку к сайту по 443 порту с добавлением полученного сертификата и создаст в планировщике задание на автоматическое продление сертификата.

Возможные ошибки

Рассмотрим некоторые ошибки, с которыми мы можем столкнуться.

Missing command line flag or config entry for this setting

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

Открываем конфигурационный файл для домена, например:

Находим опцию webroot_map (как правило, в самом низу). Либо она будет пустой, либо указывать на неправильный путь. Исправляем это:

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

Пробуем обновить сертификат.

ACMEv1 is deprecated and you can no longer get certificates from this endpoint

Ошибка появляется при попытке запросить или обновить сертификат. Полный текст ошибки:

Причина: утилита на компьютере устарела. Она пытается использовать API-портал ACMEv1, который больше не поддерживается.

Решение: обновляем утилиту certbot.

а) Для Ubuntu/Debian:

б) Для Rocky Linux/CentOS:

yum update certbot

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

Утилита certbot позволяет выполнить обновление сертификата в автоматическом режиме. В зависимости от операционной системы, инструменты различаются.

Смотрим полный путь до скрипта certbot:

Открываем на редактирование cron и добавляем следующее:

Если система вернет ошибку crontab: command not found, устанавливаем пакет cron:

apt install cron

* перавая команда для Deb, вторая — RPM.

а) для Ubuntu / Debian / Rocky Linux:

0 0 * * 1,4 /usr/bin/certbot renew —noninteractive

Читайте также:  Объяснение ошибки 403: причины ограничения доступа к веб-сайту

б) для CentOS:

0 0 * * 1,4 /bin/certbot renew —noninteractive

* в данном примере проверка и продление сертификата будет выполняться по понедельникам и четвергам (1,4) в 00:00. /usr/bin/certbot или /bin/certbot — путь, который мне выдала команда which certbot.

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

systemctl reload nginx

Однако, нам нужно, чтобы это происходило автоматически. Для этого открываем файл:

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

Настройка задания на автоматическое продление создается при получении сертификата. Проверить задание можно в планировщике заданий Windows:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Выпуск и настройка сертификата для веб-серверов Apache и Nginx

В случае использования веб-сервера без панели управления выпуск, дальнейшее обновление сертификата и настройку веб-сервера удобно будет выполнять при помощи Certbot.

Certbot — это клиент протокола ACME, который устанавливается на конечном сервере и используется для запроса сертификата, валидации домена, установки сертификата и дальнейшего автоматического продления сертификатов от Let’s Encrypt. Для получения сертификатов у Certbot есть несколько плагинов, которые делятся на два типа — аутентификаторы и установщики.

Аутентификатор используется только для получения сертификатов — он проверяет, что вы имеете доступ к домену, для которого запрашиваете сертификат, получает сертификат для указанного домена и помещает файлы сертификата в каталог /etc/letsencrypt/ на вашем сервере. Аутентификатор не устанавливает сертификат и не редактирует конфигурацию вашего веб-сервера для настройки сертификата.

Установщик — это плагин, который помимо получения сертификатов устанавливает его путем изменения конфигурации вашего веб-сервера. На сегодняшний день установка сертификатов полностью автоматизирована и для Apache, и для Nginx.

Для веб-сервера Apache

Apache – это выпущенное в 1995 году свободное ПО для размещения и поддержки веб-сервера.

Установка Certbot на Ubuntu 16.04 и выше с веб-сервером Apache:

$ sudo apt-get install snapd
$ sudo snap install core; sudo snap refresh core
$ sudo snap install —classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

CentOS 8 и выше с веб-сервером Nginx:

$ sudo dnf install epel-release
$ sudo dnf upgrade
$ sudo dnf install snapd
$ sudo systemctl enable —now snapd.socket
$ sudo ln -s /var/lib/snapd/snap /snap
$ sudo snap install core; sudo snap refresh core
$ sudo snap install —classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Debian 9 с веб-сервером Apache:

Инструкция по установке Certbot на другие дистрибутивы доступна на официальном сайте Certbot.

После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Apache для выпуска и автоматической установки сертификата:

Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Apache.

Для установки Certbot должен иметь возможность найти корректный виртуальный хост в вашей конфигурации Apache. Для этого он будет искать директиву ServerName, соответствующую доменному имени, для которого вы запросите сертификат. Поэтому предварительно убедитесь, что конфигурация веб-сервера настроена верно.

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

После окончания установки сертификата Certbot предоставит вам дополнительную информацию, а также ссылку для проверки установленного сертификата:

Congratulations! You have successfully enabled https://wolfersen.ru
You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=wolfersen.ru

Самостоятельная установка для опытных пользователей

Плагин Webroot

Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин apache с командой certonly:

$ sudo certbot —apache certonly

Плагин apache с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый виртуальный хост для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения, а также при необходимости активирует mod_ssl.

Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Apache, используйте плагин webroot.

$ sudo certbot certonly —webroot

После запуска плагина вы сможете указать доменное имя (или имена) для запроса сертификата, а также путь к директории с файлами сайта.

По результатам работы Certbot уведомит вас и в случае успеха укажет путь к файлам сертификата. В нашем примере файлы размещены по пути:

Путь к этим файлам необходимо указать в ssl конфигурации Apache. Если для домена нет отдельной конфигурации — скопируйте и переименуйте файл дефолтной конфигурации, например:

$ sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/wolfersen.ru-ssl.conf

Затем откройте файл для правки и исправьте значения следующих директив на соответствующие вашему домену пути:

ServerName wolfersen.ru
ServerAlias www.wolfersen.ru
DocumentRoot /var/www/wolfersen.ru
SSLCertificateFile /etc/letsencrypt/live/wolfersen.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wolfersen.ru/privkey.pem

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

$ sudo a2enmod ssl
$ sudo a2ensite wolfersen.ru-ssl
$ sudo systemctl reload apache2

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

Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания, если задания нет, проверьте список системных таймеров командой systemctl list-timers.

Протестировать автоматическое обновление сертификатов вы можете, выполнив команду:

$ sudo certbot renew —dry-run

Для веб-сервера Nginx

Nginx – это ПО с открытым исходным кодом, которое работает под управлением ОС семейства Linux/Unix и Microsoft. Nginx выпущен в 2004 году, он позиционируется как простой и быстрый веб-сервер.

В случае, если используется связка Nginx+Apache, сертификат следует выпускать именно по инструкции ниже!

Установка Certbot на Ubuntu 16.04 и выше с веб-сервером Nginx:

CentOS 7 с веб-сервером Nginx:

Debian 9 с веб-сервером Nginx:

После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Nginx для выпуска и автоматической установки сертификата

Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Nginx.

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

Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин nginx с командой certonly:

$ sudo certbot —nginx certonly

Плагин nginx с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый блок server для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения.

Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Nginx, используйте плагин webroot.

Путь к этим файлам необходимо указать в блоке server конфигурации Nginx. Пример настроек SSL для Nginx в файле /etc/nginx/sites-available/default:

После этого проверим корректность конфигурации:

После чего перезагрузим веб-сервер:

$ sudo systemctl reload nginx

Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания.

Выпуск и настройка сертификата для панели управления VestaCP

VestaCP – это панель управления с открытым исходным кодом, которая может использоваться для управления сайтами, учетными записями электронной почты, FTP и т. д. Интерфейс VestaCP позволяет добавлять новые сайты и домены, прямо из панели работать с почтой, создавать резервные копии и добавлять SSL‑сертификаты.

Поддержка Let’s Encrypt доступна в VestaCP из коробки.

Для выпуска и установки сертификата вы можете отметить дополнительные опции сразу при добавлении домена в разделе WEB панели VestaCP:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Или отредактировать настройки домена в разделе WEB, выбрав опции поддержки SSL уже после добавления:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

How to Use — and Why You Need — Let’s Encrypt More Than Ever

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Выпуск и автоматическая установка сертификата занимают до 5 минут. После этого данные SSL-сертификата будут доступны также в настройках домена.

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Помимо этого, при установке добавляется cron-задание для автоматического обновления сертификатов, истекающих через 30 и менее дней. Проверить это можно в разделе CRON панели VestaCP:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Решение возможных проблем

  • Убедитесь, что ваше доменное имя было введено правильно.
  • При использовании АААА записей убедитесь, что в DNS присутствуют также записи типа А.
  • Убедитесь, что в конфигурационном файле NGINX отсутствует 301-й редирект на HTTPS (для выпуска или перевыпуска сертификата домен должен быть доступен по HTTP).
  • Попробуйте удалить домен из панели VestaCP и добавить его снова, после чего повторить попытку выпуска сертификата.
  • Повторите попытку выпуска сертификата через 1 час.

Сертификат Let’s Encrypt для почтового сервера MS Exchange

В комплекте установленного нами LetsEncrypt-Win-Simple для Windows идет скрипт ImportExchange.v2.ps1. Он нужен для импорта сертификата в конфигурацию почтового сервера MS Exchange.

Для начала создадим каталог, куда будет выгружен сертификат. В моем примере я воспользуюсь путем C:SSL.

Допустим, что адрес подключения к серверу будет exchange.dmosk.ru. Тогда получить сертификат и импортировать его в Exchange можно командой:

* данная команда запросит сертификат для узла exchange.dmosk.ru, сохранит нужные файлы в каталоге C:SSL и импортирует полученные ключи в Microsoft Exchange Server.

Если мы запускаем команду в оболочке PowerShel, клманда должна начинаться с:

После успешного выполнения команды, заходим в консоль управления сервером, переходим на вкладку управления сертификатами. В списке мы должны увидеть полученную последовательность от Let’s Encrypt. Кликаем по ней и назначаем сертификат для нужных служб Exchange (как правило, SMTP, IIS).

Условия получения бесплатного сертификата от Let’s Encrypt

Прежде чем начать, необходимо знать о некоторых нюансах получения сертификата Let’s Encrypt:

  • При запросе выполняется проверка домена. Для этого необходимо:
    либо создать TXT-запись в DNS.либо поднять веб-сервер, далее в его корне создается каталог .well-known, а в нем файл с произвольным названием. После корневой центр отправляет запрос серверу на загрузку данного файла и, в случае успеха, выдает сертификаты для указанного доменного имени.
  • либо создать TXT-запись в DNS.
  • либо поднять веб-сервер, далее в его корне создается каталог .well-known, а в нем файл с произвольным названием. После корневой центр отправляет запрос серверу на загрузку данного файла и, в случае успеха, выдает сертификаты для указанного доменного имени.
  • SSL-сертификат выдается на 90 дней, поэтому необходимо по расписанию запускать команду на автоматическое продление ключа. Когда проходит 60 дней после начала использования нового сертификата, центр Let’s Encrypt может выдать новый.
  • Если выполнять запрос для домена 3 уровня и выше, он должен пройти DNS проверку на всех уровнях. Например, домен layer3.layer2.com должен отвечать на запросы как для layer3.layer2.com, так и для layer2.com.

Получение бесплатного SSL сертификата Let’s Encrypt

Тематические термины: Let’s Encrypt, CentOS, Ubuntu

Читайте также:  Услуги веб-хостинга: как выбрать лучший сервис для веб-сайта?

Процесс в данной статье описан на примере систем Linux CentOS, Ubuntu (Debian) и Windows. Настройка выполняется в несколько шагов.

Зачем нужен SSL-сертификат Let’s Encrypt

SSL-сертификат — это цифровая подпись сайта, которая требуется для безопасного соединения. Посмотрите в строку браузера.

How to Use — and Why You Need — Let’s Encrypt More Than Ever

На нашем сайте подключен SSL-сертификат: строка — Сертификат (действительный). И есть значок «Безопасное подключение». Это значит, что данные, которые оставляют клиенты на нашем сайте, защищены специальным шифрованием и недоступны мошенникам и прочим злоумышленникам.

Сертификаты Let’s Encrypt — это обычные сертификаты, которые подтверждают домен. Они предназначены для любых серверов с доменным именем: веб-серверов, почтовых серверов, FTP-серверов и других.

Как работает SSL

Объясним простыми словами.

  • Пользователь вводит в браузерную строку доменное имя и нажимаем «Enter».
  • Браузер посылает запрос к сайту.
  • Сайт ответно присылает копию специального SSL-сертификата.
  • Браузер проверяет его достоверность у центра сертификации, который его выдал.
  • Если сертификат настоящий, сайт и браузер «договариваются» о специальном ключе, который будет шифровать данные, что позволит установить защищенное https-соединение и защитить данные пользователей от злоумышленников.

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

Преимущества Let’s Encrypt

  • Бесплатность. Let’s Encrypt — некоммерческая организация, которая позволяет пользоваться услугами на безвозмездной основе. Поэтому их сертификаты пользуются популярностью у молодых сайтов, которые не обладают бюджетом на платные SSL-сертификаты.
  • Простота получения. Большинство хостинг-провайдеров предлагают подключить Let’s Encrypt автоматически в пару кликов.
  • Автоматическое продление. Также многие хостеры предлагают автоматическое продление Let’s Encrypt сертификата, что снимает нужду в постоянном контроле.
  • Надежность и безопасность. Несмотря на бесплатность, уровень шифрования не уступает платным аналогам.

Недостатки Let’s Encrypt

  • Ограниченный срок действия, который составляет всего 90 дней. Хоть обновление лицензии и проходит автоматически, клиентам рекомендуется все равно следить за своевременным обновлением сертификата, чтобы избежать ошибок и проблем со стороны центра сертификации.
  • Данные сертификаты совместимы с большинством браузеров, однако некоторые из них все-таки могут не поддерживать Let’s Encrypt.
  • Так как Let’s Encrypt является в первую очередь некоммерческой организацией, они не дают никаких гарантий и компенсаций за ошибки.
  • Let’s Encrypt не выпускает сертификаты OV (Organization Validation, подтверждение организации) и EV (Extended Validation, сертификаты высокой надежности).

Платные аналоги

Существуют и платные SSL-сертификаты.

Например, сертификаты RapidSSL безопасны и мгновенно выдаются доверенными реселлерами по всему миру. RapidSSL подходит для предприятий и организаций, которые хотят получить больше гарантий безопасности своего веб-сайта по сравнению с бесплатными поставщиками TLS/SSL. Компания ежегодно проводит аудиты WebTrust для центров сертификации, чтобы убедиться надежности и безопасности. Более того, сертификаты RapidSSL принимаются всеми браузерами в Интернете.

Анонс

За последние годы инфраструктура приватных ключей PKI (Public Key Infrastructure) незаметно окружила нас со всех сторон:

  • Большинство сайтов в сети Интернет используют HTTPS протокол. Для его работоспособности необходимо получать сертификаты из удостоверяющих центров (Certificate Authority)
  • Компании организуют доступ к своей IT инфраструктуре и информационным ресурсам с помощью ключей и сертификатов, которые сотрудники получают из специальных систем.
  • Для отправки документов в государственные и коммерческие структуры требуется цифровая подпись, которая реализуется теми же механизмами.

Давайте разберемся как работают системы PKI, т.к. они еще долго будут актуальны для обеспечения аутентификации и безопасной передачи данных. В данной статье рассмотрим теорию и в качестве примера PKI возьмём самую известную в мире реализацию PKI — HTTPS протокол в сети Интернет. В качестве удостоверяющего центра будем использовать бесплатный Let’s Encrypt. В следующей статье  «Сам себе PKI: Практика на примере OpenSSL и CA Smallstep» перейдем к практике и организуем безопасную передачу данных на основе TLS протокола:

  • Сначала вручную (с помощью OpenSSL) пройдем цепочку генерации и использования самоподписанных сертификатов в HTTPS сервере.
  • Далее развернем собственный удостоверяющий центр Smallstep и будем автоматически получать подписанные им сертификаты.

На схеме упрощенная система PKI для организации HTTPS в сети Интернет:

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Другие полезные материалы:

2. Настройка Apache + SSL для работы сайта по HTTPS.

The free, automated and open certificate authority confers all sorts of benefits to your website.

There are many ways to add an SSL certificate to your website. The easiest and cheapest way is with the Internet Security Research Group’s (ISRG) Let’s Encrypt project.

Let’s Encrypt is designed to provide free, automated, and open security certificate authority (CA) for everyone. It enables website owners to get security certificates within minutes. This means everyone gets a safer web experience.

We’ve known since Firesheep showed us your login could be easily stolen over WiFi that we needed every website to be encrypted. While over 50 percent of sites that connect using Google Chrome are now secure, the expense and trouble of installing certificates has delayed this natural move. I mean, who doesn’t want a more secure website?

“Encryption should be the default for the web,” said Josh Aas, the ISRG’s executive director and senior technology strategist at Mozilla when Let’s Encrypt was formed in 2014. “The web is a complicated place these days; it’s difficult for consumers to be in control of their data. The only reliable strategy for making sure that everyone’s private data and information is protected while in transit over the web is to encrypt everything. Let’s Encrypt simplifies this.”

Indeed it has. Within a year of its launch, Let’s Encrypt has issued its millionth SSL certificate.

Key principles behind Let’s Encrypt are:

  • Free: Anyone who owns a domain name can use Let’s Encrypt to get a trusted certificate at zero, zilch, nada cost.
  • Automatic: Software running on a webserver can interact with Let’s Encrypt to painlessly obtain a certificate, securely configure it for use, and automatically take care of renewal.
  • Secure: Let’s Encrypt will advance TLS security best practices, both on the Certificate Authority (CA) side and by helping site operators properly secure their servers.
  • Transparent: All certificates issued or revoked will be publicly recorded and available for anyone to inspect.
  • Cooperative: Much like the Internet protocols themselves, Let’s Encrypt is a joint effort to benefit the community, beyond any one organization’s control.

Technically, Let’s Encrypt management software uses Automated Certificate Management Environment (ACME) to:

  • Automatically prove to the Let’s Encrypt CA that you control the website.
  • Obtain a browser-trusted certificate and set it up on your web server.
  • Keep track of when your certificate will expire, and automatically renew it.
  • Help you revoke the certificate if that ever becomes necessary.

That all sounds good, and it is, but there’s a catch. Let’s Encrypt has no mechanism to check if a certificate should be given. It turns out that hackers are misusing Let’s Encrypt certificates to help hide malicious websites as sites coming from such companies as Apple, Google, and PayPal.

As the WordFence security team points out, “The Let’s Encrypt team must start doing keyword searches on SSL certificate applications. This can be fully automated and Lets Encrypt needs to reject certificates that contain strings like ‘.apple.com,’ ‘paypal.com,’ ‘.google.com’ and other common phishing patterns.”

This is a worry. If I were running an e-commerce site, I’d use an extended validation (EV) SSL certificate from a well-regarded CA. To find the right commercial certificate for you check out the recommendations at SSL Shopper.

For the rest of us, a Let’s Encrypt certificate should do fine. For the technical how-to details see: Install Let’s Encrypt to Create SSL Certificates. Linode’s SSL Certificates page offers other technical SSL certificate details.

Security and trust. Your website gets both with Let’s Encrypt.

My recommendation: you need it, so you might as well use it.

Заключение

В статье мы изучили теоретические основы PKI и посмотрели, как работает система удостоверяющих центров для организации HTTPS соединений браузера с Интернет сайтами. Поняли, на какую информацию надо обращать внимание при просмотре сертификатов сайтов. Теперь можно сделать несколько важных выводов:

  • Не надо бездумно добавлять сертификаты в список доверенных CA! А это очень просто сделать в Windows, запустив на выполнение файл с расширением «CRT». Ведь, если в списке окажется сертификат злоумышленника, то он сможет организовать, так называемую, атаку MITM (Man-in-the-middle)  и незаметно читать все сообщения в соцсетях и мессенджерах, получать пароли от банковских систем.
  • Как понять, что используется сертификат злоумышленника? Смотрим на сертификат сайта и видим, что его выдал CA не из эталонного списка, а попавший туда позже. На картинке ниже видим Касперского на сайте Росбанка. Касперский явно не является доверительным CA из списка браузера. Отсюда делаем вывод, что он установил свой сертификат позже. Но Касперскому мы верим, что он ничего плохого делать не будет, а просто проверит на вирусы!)
  • Основной вывод — тщательно проверяйте сертификаты сайтов, если они имеют важное значение в вашей жизни и финансовом благополучии!

How to Use — and Why You Need — Let’s Encrypt More Than Ever

Таким образом, SSL-сертификаты от Let’s Encrypt подходят как для молодых сайтов, так и для крупных проектов — по качеству шифрования проблем нет. Однако, если вам нужна расширенная валидация, придется приобрести платный аналог.

На виртуальном хостинге в Макхост вы можете автоматически сгенерировать сертификат Let’s Encrypt:

  • перейдите в панель управления хостингом ispmanager — доступы будут предоставлены после оплаты и активации хостинга;
  • в верхней части страницы найдите «Let’s Encrypt» и нажмите «Сгенерировать сертификат»;
  • в поле «Домен» выберите сайт, на котором хотите настроить защищенный протокол, и сохраните изменения;
  • подождите некоторое время для активации сертификата.

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

Зачем нужен SSL-сертификат Let’s Encrypt
Как работает SSL
Преимущества Let’s Encrypt
Недостатки Let’s Encrypt

Оцените статью
Хостинги