Как получить сертификат let’s encrypt

Мониторинг сертификатов

Надо следить за тем, что бы сертификаты на доменах обновлялись. Можно мониторить логи получения и распространения, и когда что-то идёт не так — кидать warning в системе мониторинга. Но мы пойдём с одной стороны на минималках, с другой более основательно и ещё помимо этого захватим другие исталяции, например с traefik, который живёт там сам по себе.

Я использую zabbix и скрипт от @selivanov_pavel

Проверим с его помощью мой домен локально

41 день сертификат на itdog.info будет актуален. Сертификат в let’s encrypt обновляется за 30 дней до протухания. А значит, например, если ему осталось жить 10 дней, значит что-то пошло не так и надо идти смотреть.

Темплейт состоит из одного item и одного trigger. Темплейт есть так же на github

В item две переменных, первая HOST.NAME берёт имя хоста, предполагается что у нас хост назван по доменному имени. Переменная $TLS_PORT по дефолту 443, но если нужно проверять на нестандартном порту, то записываем значение порта в macros.

Триггер тоже супер простой

Если полученное значение меньше 10ти — аллерт. Таким образом, мы узнаем если у нас начнут протухать сертификаты и будет 10 дней на починку.

Порядок действий

Шаг 1 — Установка зависимостей

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

sudo apt-get update

Для того, чтобы получить ПО Let’s Encrypt, нам понадобится Git (популярная система контроля версий). Для его установки выполните следующую команду:

sudo apt-get install git 

Шаг 2 — Установка клиента Let’s Encrypt

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

Для наших целей мы создадим папку в каталоге /opt. Это стандартный каталог для размещения программного обеспечения сторонних производителей:

mkdir /opt

Чтобы создать локальную копию клиента Let’s Encrypt, выполним:

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Шаг 3 — Установка SSL-сертификата

Получить сертификат SSL для Apache с помощью Let’s Encrypt очень просто. Клиент автоматически сгенерирует и установит новый сертификат SSL, который действителен для доменов, переданных в качестве параметров.

Перейдем в каталог letsencrypt:

cd /opt/letsencrypt

Чтобы выполнить интерактивную установку и получить сертификат, действительный только для одного домена, выполните команду letsencrypt-auto со следующими параметрами:

./letsencrypt-auto --apache -d example.com

Если вы хотите установить один сертификат, действительный для нескольких доменов или субдоменов (это может понадобиться в случае, если вы разместили на VDS несколько сайтов, при этом используете один и тот же IP-адрес, добавить который вы можете, следуя этой инструкции: http://timeweb.com/ru/help/pages/viewpage.action?pageId=4358224; или если ваш сайт доступен и с префиксом www и без него), вы можете передать их в качестве дополнительных параметров команды. Первое передаваемое доменное имя будет использоваться Let’s Encrypt в качестве базового, по этой причине мы рекомендуем передать первым доменное имя верхнего уровня, а затем список любых дополнительных поддоменов или псевдонимов:

./letsencrypt-auto --apache -d example.com -d www.example.com

В этом примере базовым доменом будет example.com.

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

Шаг 4 — Настройка  автопродления

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

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

letsencrypt renew

Чтобы автоматизировать процесс продления, мы добавим задание в cron (прочитать, как это сделать, можно в этом разделе: http://timeweb.com/ru/support/faq/hosting/technical/kak-mozhno-zapuskat-zadachi-vypolnyat-skripty-po-raspisaniyu-na-khostinge-timeweb/). Для редактирования crontab для root пользователя выполните следующую команду:

sudo crontab -e

Вставьте следующую строку:

30 2 * * 1 /opt/letsencrypt/letsencrypt renew >> /var/log/letsencrypt-renew.log

Сохраните файл и выйдите из редактора. 

Это создаст новое задание, которое будет пытаться обновить сертификаты, у которых осталось менее 30 дней до истечения каждый понедельник в 2:30 утра. Вся информация, генерируемая командой, будет сохраняться в лог-файле, доступном по пути /var/log/letsencrypt-renew.log.

Шаг 5 — Обновление клиента Let’s Encrypt (необязательно)

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

св /opt/letsencrypt
sudo git pull

Это позволит загрузить все последние изменения клиента на ваш сервер.

Что такое SSL-сертификат и зачем он нужен

Рассказывает и показывает Лена, специалист техподдержки Vepp. Под видео та же иснтрукция текстом и со скриншотами.

SSL-сертификат — цифровой документ. Он устанавливается на тот же сервер, где лежит сайт. Для чего? Чтобы в адресе сайта вместо http было https. Разница всего в одной букве!

Адрес сайта без SSL-сертификата выглядит так: http://example.com.
Если SSL установлен, то так: https://example.com.

С точки зрения пользы для сайта сертификат нужен, чтобы не отпугивать пользователей. Если у сайта нет SSL, браузер Google Chrome добавляет перед его адресом ярлык «Не защищено», а иногда даже блокирует доступ к нему. Другие браузеры тоже обозначают небезопасное соединение.

Сайт без SSL-сертификата. Браузер предупреждает: «Подключение не защищено»

Но это всё поверхностный взгляд. На самом деле сертификат нужен, чтобы зашифровать данные, которые идут от сайта к браузеру. Если они не защищены, злоумышленники могут «подслушать» трафик, изменить его содержание или вовсе подменить сайт.

Вариантов мошенничества с перехватом данных десятки. Именно поэтому Google и другие крупные интернет-компании призывают веб-мастеров переходить на защищённый протокол — HTTPS. Мы с ними полностью согласны и ниже расскажем, как это сделать.

Настройка SSL сертификатов для других веб-серверов

В поставке letsencrypt помимо плагина для работы с Apache имеется ряд других, а именно:

  • standalone
  • webroot
  • manual
  • nginx

Standalone

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

Webroot

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

При работе с данной опцией необходимо настроить веб-сервер на чтение файлов соответствующим образом.

Manual

Из названия можно догадаться, что настройка и установка SSL сертификата будет проводиться вручную :-) Пожалуй, сейчас это наиболее удобный вариант настройки сертификата для nginx ввиду «сыроватости» letsencrypt nginx плагина.

После ввода этой команды вам необходимо будет самостоятельно провести манипуляции по подтверждению домена, разместив файл с определённым содержимым в нужной директории на сайте. Когда процедура создания сертификата закончится, все необходимые файлы будут лежать по следующему пути /etc/letsencrypt/live/$domain. В подкаталоге liveнаходятся все самые актуальные сертификаты и ключи, тогда как keys и archive содержат все ранее созданные файлы.

Настройка SSL в Nginx

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

  • privkey.pem — наш приватный ключ
  • cert.pem — сертификат сервера
  • chain.pem — корневой (root) и промежуточный (intermediate)
  • fullchain.pem — все необходимые нам сертификаты для настройки веб-сервера.

Как же в данном случае будет выглядеть настройка Nginx?

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

ТСПУ — вообще само по себе продвинутое программное обеспечение?

Климарев. Оказалось продвинутое. Мы не знаем, что это такое, никто его не видел. Это все в условиях секретности ставится, для операторов это черный ящик. Просто вот коробка, которую поставили под страхом всяких писем, всяких соглашений о секретности, и не пускают никого.

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

Если такие работы , находят окно , чтобы никому не мешало — или наоборот всех разгоняют. Это планируется все, в виде письма какого-то, просим обеспечить доступ наших специалистов в особых условиях. Договариваются об особых условиях, в каждом же операторе связи до сих пор существуют всякие «секретчики». Служба мобилизации, поскольку это связь, военные, гражданская оборона, всякие МЧС и так далее. У крупных операторов есть целые отделы, которые занимаются взаимодействием с этими службами, вот через эти службы это проводится, и организуется так, чтобы в условиях секретности это все ставилось. 

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

Выбор пал на ООО «РДП.ру» — фактически бывший отдел подмосковного оператора «Экотелеком», который делал решения сначала для собственных нужд, а затем стал продавать их другим операторам в России и СНГ. В итоге его купил Ростелеком в качестве поставщика оборудования для ТСПУ.

Коробочки ЭкоDPI, которые ставят в качестве ТСПУ, много лет до этого покупали за свой счет — и покупают до сих пор — операторы, чтобы решать свои задачи: BRAS, NAT, ну и DPI, чтобы эффективно блокировать сайты, не получая штрафы от системы «Ревизор». Это качественное железо и софт, которое, к сожалению, эффективно блокирует сайты и протоколы.

OCSP stapling

Браузеры кроме Chrome имеют свойство обращаться к CA для сверки со списком отозванных сертификатов, задерживая открытие страниц на секунды. Устранить эту задержку можно прикладывая подписанный ответ OCSP сервера к ответу при создании нового соединения.

Если у вас нет локального кеширующего DNS сервера, в директиве следует указать IP фактически используемого DNS сервера.

Кеширующий сервер

На роль простого кеширующего сервера есть подходящий кандидат.

Ему нужно запретить отвечать посторонним.

Применим конфигурацию и проверим работу.

Обычно всё работает и так, но можно проверить.

Успешным считается следующий вывод.

Кеш TLS сессий

Если у вас сколько-нибудь современная версия nginx (1.5.9 и старше), то вам нет смысла включать кеш сессии. В более новых версиях TLS session tickets, которые делают всё то же, что кеш сессий, но .

Кеширование сессий призвано сократить время на установку новых соединений. Кеш сессий будет иметь смысл если параметры каждой сессии хранить заведомо дольше времени жизни соединения (обычно от одной до пяти минут).

По умолчанию кеш сессий не используется. Это оправдано если у вас современная версия nginx или если у вас нагруженный сервер: после какой-то частоты новых подключений кеш перестаёт справляться со своей задачей, либо вы оказываетесь вынуждены увеличить размеры кеша до неоправданных величин, опять же сводящих на нет ожидаемую пользу от кеша затратами на поиск записей в нём. Если вы можете, не включайте кеш TLS сессий.

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

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

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

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

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

Linux NGINX

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

server {
    listen       80;
    server_name  dmosk.ru;
    root   /usr/share/nginx/html;
}

* где dmosk.ru — домен, для которого работает сайт и для которого мы будем запрашивать сертификат; /usr/share/nginx/html — путь по умолчанию для nginx.

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

location ~ /.well-known {
    root /usr/share/nginx/html;
    allow all;
}

* данными строчками мы говорим, что для всех запросов после /.well-known необходимо отдавать скрипты из каталога /usr/share/nginx/html; allow all предоставляет доступ всем.

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

    …
    location ~ /.well-known {
        root /usr/share/nginx/html;
        allow all;
    }
    if ($uri !~ /.well-known){
        return 301 https://$host$request_uri;
    }

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

nginx -t

service nginx reload

Linux Apache

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

а) для CentOS:

vi /etc/httpd/conf.d/lets.conf

б) для Ubuntu / Debian:

vi /etc/apache2/conf-enabled/lets.conf

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

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

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

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

apachectl configtest

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

systemctl restart httpd || systemctl restart apache2

Windows

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

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

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

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

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

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

У нас должна быть возможность управления записями в DNS. На данном этапе достаточно просто зайти в панель управления DNS и перейти к этапу получения сертификата (ниже по тексту). Если домен новый и был только-что делегирован на DNS, возможно, придется подождать, пока он не станет доступен для всех серверов DNS в глобальной сети.

Шаг 3 – Генерация SSL сертификата

После того, как вы загрузили и установили ACME-клиент и композер, вы можете создать бесплатный SSL от Let’s Encrypt.

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

Процесс создания сертификата SSL довольно прост. Выполните следующую команду:

Для нескольких доменов, необходимо перечислять их через двоеточие:

Если сертификат был успешно выдан, вы увидите следующее сообщение:

Клиент ACME сгенерировал сертификаты и файлы закрытого ключа. К сожалению, установка не может быть выполнена через SSH из-за ограничений безопасности. Поэтому сначала вам нужно вручную скопировать файлы сертификатов и секретных ключей на свой компьютер.

Это можно сделать с помощью моей инструкции и скачать файл через SSH, либо с помощью FTP клиента: просто скачайте их, либо методом copy/paste.

Перейдите в каталог, в котором хранятся закрытый ключ и файлы сертификатов:

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

Скопируйте часть, выделенную красным цветом, и сохраните ее в текстовом файле на вашем компьютере. Назовите текстовый файл certificate.txt

Сделайте тоже самое с закрытым ключом:

Скопируйте закрытый ключ (как показано на скриншоте) и сохраните его в текстовом файле. Назовите его privatekey.txt

Самая сложная часть закончилась. Теперь вы можете установить SSL-сертификат.

Telegram не удалось заблокировать, что с тех пор изменилось? РКН стал сильнее? ТСПУ массово установлены?

Климарев. Конечно, все учли. На этот раз все серьезно.

Здольников. Безусловно, ТСПУ — это, в первую очередь, результат работы над ошибками первой войны с Telegram. ТСПУ дает возможность блокировать протоколы, в том числе пытаться блокировать те, что скрываются под мусор или под другие протоколы. 

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

Кулин. Появились ничем, вообще ничем не ограниченные ТСПУ. Появилось понимание, что их можно и нужно ставить на транзит , в этом есть смысл для них. Это сильно упрощает обхват. Думаю, они не установлены прямо массово и не охватывают большинство транзита, но охватывают уже заметную часть сетей. Я субъективно думаю, что меньше 50%, но больше 20%.

Что представляют из себя протоколы, которые предлагается запретить

TLS – базовый протокол шифрования в интернете. DNS – сервис определения IP-адреса узла в интернете по его доменному имени. Обращение к DNS происходит при каждом запросе пользователем доменного имени. HTTPS – версия протокола HTTP, по которому передаются веб-страницы, с шифрованием. Шифрование происходит путем обмена сертификатами между пользователем и серверов.

DoH и DoT – экспериментальные версии DNS, которые работают поверх протоколов HTTPS и TLS соответственно. При использовании таких протоколов интернет-провайдер не видит, к какому домену обращается пользователь, что затрудняет блокировку доступа к запрещенным ресурсам. SNI – технология, которая позволяет передавать имя запрашиваемого пользователем домена при работе по протоколу HTTPS.

Как поясняет эксперт по информационной безопасности и автор Telegram-канала «Лаборатория Артимовича» Дмитрий Артимович, до появления SNI все заголовки в HTTPS были шифрованными. В результате было сложно разместить несколько шифрованных ресурсов на одном сервере: не было понятно, какой домен нужен пользователю, и соответственно, не было понятно, какой сертификат нужно использовать.

SNI решает эту проблему, передавая информацию о домене в незашифрованном виде. ESNI же позволяет передавать имя домена зашифрованным. Упоминание протокола TLS 1.3 в пояснительной записке к законопроекту, скорее всего, было ошибкой, полагает гендиректор хостинг-провайдера «Дремучий лес» и автор Telegram-канала «Эшер II» Филипп Кулин: по всей видимости, авторы документа имели ввиду ESNI, который должен был выйти вместе с протоколом TLS 1.3, но не вышел.

Получаем сертификат от Let’s Encrypt

Итак, я считаю, что вы настроили почтовый сервер по предложенной выше ссылке. Значит, у вас установлен веб сервер Apache, а так же все в порядке с dns записями. Сертификатов мы получим сразу два. Для доменных имен:

  • mail.site.ru — имя почтового сервера, этот сертификат будут использовать postfix и apache
  • webmail.site.ru — домен для web интерфейса почты, будет использовать веб сервер

Для настройки получения сертификатов let’s encrypt и настройки apache, нам нужно будет установить несколько пакетов. Напоминаю, что речь идет про Centos 8. В других системах настройка будет аналогичной, только имена пакетов могут отличаться.

# dnf install certbot python3-certbot-apache mod_ssl

Пакеты эти живут в репозитории epel, так что если он еще не подключен, подключите.

# dnf install epel-release

Дальше нам нужно добавить 2 виртуальных домена в настройки apache. Для этого создаем 2 конфига в директории /etc/httpd/conf.d/.

1. mail.site.ru.conf

<VirtualHost *:443>
 ServerName mail.site.ru
 DocumentRoot /var/www/mail.site.ru/
 <Directory /var/www/mail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/mail.site.ru-error.log
 CustomLog /var/log/httpd/mail.site.ru-access.log combined
</VirtualHost>

<VirtualHost *:80>
 ServerName mail.site.ru
 DocumentRoot /var/www/mail.site.ru/
 <Directory /var/www/mail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/mail.site.ru-error.log
 CustomLog /var/log/httpd/mail.site.ru-access.log combined
</VirtualHost>

2. webmail.site.ru.conf

<VirtualHost *:443>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
</VirtualHost>

<VirtualHost *:80>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
</VirtualHost>

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

# apachectl -t
# apachectl reload

Если увидите ошибку:

AH00526: Syntax error on line 85 of /etc/httpd/conf.d/ssl.conf:
SSLCertificateFile: file '/etc/pki/tls/certs/localhost.crt' does not exist or is empty

Просто удалите конфиг /etc/httpd/conf.d/ssl.conf. Он нам не нужен.

Если нет ошибок, то можно запускать certbot и получать сертификаты. Делается это очень просто.

# certbot --apache

Если все прошло без ошибок, то вы увидите в директории /etc/letsencrypt/live две папки с сертификатами для каждого из доменов.

Так же certbot автоматически добавит в конфигурации виртуальных хостов apache несколько дополнительных параметров.

<VirtualHost *:443>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
 SSLCertificateFile /etc/letsencrypt/live/mail.site.ru/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/mail.site.ru/privkey.pem
 Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

<VirtualHost *:80>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
 RewriteEngine on
 RewriteCond %{SERVER_NAME} =mail.site.ru
 RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} 
</VirtualHost>

В этот виртуальный хост установите веб почту, если вам она нужна.

Подготовим nginx к получению сертификатов

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

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

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

Хосты-редиректоры (например, с голого домена на www) можно пропустить. ACME сервер обязан учитывать стандартную переадресацию.

Перезагрузим nginx и проверим что наш тестовый файл виден:

После проверки лучше удалить тестовый файл — любит удалять за собой всё лишнее, а такой файл будет мешать и вызывать сообщение об ошибке (Unable to clean up challenge directory).

Теперь у нас всё готово чтобы .

О переадресации с кодами 301 и 302

Как было уже сказано, ACME сервер Boulder учитывает переадресацию . В этом смысле не имеет значения где, в конечном счете, находятся файлы, требуемые для прохождения проверок. Переадресация возможна даже , без ограничений по конечному протоколу HTTP или HTTPS. Сами .

Если вы можете получить эти файлы с помощью с ограничением в десять переадресаций, то и Boulder эти файлы увидит. Не должно быть .

Это удобно если у вас сложная структура переадресаций между разными версиями сайтов. Должно быть достаточно подключить тот блок с только на основном сайте для получения сертификатов для всех остальных.

Проверка всегда начинается с запроса по протоколу HTTP на 80 порту.

Если у вас уже всё зашифровано…

Если у вас уже все сайты работают по HTTPS, то вся схема будет работать если у вас настроен переадресующий сервер на 80 порту, сохраняющий в ответе.

Другое дело что можно сократить путь и подключить наш блок с в умолчальном сервере для 80 порта, который делает переадресацию на HTTPS. Тогда не нужно будет ничего дописывать в конфиги отдельных сайтов.

Пример конфигурации такого переадресующего всё-подряд-на-HTTPS сервера:

Такой конфиг стоит определить в , в стороне от конфигов конкретных сайтов.

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

Если нужно получить сертификат для домена без сайта…

Типичный пример — сертификат для выделенных под SMTP или IMAP серверов, на которых вообще нет каких-то сайтов. Либо используйте универсальный переадресатор что выше, либо…

К сожалению, протокол ACME требует чтобы такой сервер был доступен во время каждой проверки. Это практически эквивалентно постоянной доступности, ввиду требования получения и обновления сертификатов без перезагрузки сервера. Не удаляйте такой конфиг после получения сертификата.

Если у вас только Apache2…

Если у вас Apache2, а перейти на всеми любимый nginx возможности нет, то… Добавьте следующие строчки в :

Затем

И обязательно проверьте, так:

Существует много причин почему такая схема может у вас в Apache2 не заработать. Пары экранов текста не хватит чтобы описать их все. Не серчайте — статья про nginx.

Как получить бесплатный SSL-сертификат с Vepp

Прежде чем перейти к делу, проясним один момент: SSL-сертификат выдаётся только на тот домен, который ведёт на сайт.

Допустим, у нас уже есть домен, который ведёт на сервер. Тогда может быть два сценария: создаём новый сайт или настраиваем текущий.

SSL для нового сайта

Если вы создаёте сайт с доменом, который ведёт на сервер, то ничего делать не нужно: Vepp запросит и выпустит SSL-сертификат сам, сам же настроит подключение по HTTPS.

Тоже самое при покупке доменов через Vepp, только тут сертификат выпустится не сразу, а через 2-48 часов, когда обновятся DNS-записи.

SSL для уже созданного сайта

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

Шаг 1. Откройте нужный сайт и прямо с карточки сайта нажмите на кнопку Установить SSL. Выберите Выпустить Let’s Encrypt SSL-сертификат.

Шаг 2. Укажите Домен, для которого выпускается сертификат и произвольное Имя SSL-сертификата (его нигде не будет видно). Поставьте галочку напротив Включить сгенерированный SSL-сертификат. Нажмите кнопку Выпустить.

Шаг 3. Дождитесь выпуска SSL, он занимает от нескольких минут до 48 часов (в зависимости от типа проверки). Следите за статусом на карточке сайта.

После перехода на HTTPS проверьте, корректно ли работает SSL-сертификат. Google рекомендует использовать сервис Qualys Lab.

Шаг 2 – Установка клиента ACME и Composer

Для создания SSL-сертификата Let’s Encrypt, мы будем использовать ACME-клиент (Automated Certificate Management Environment) и написанный на PHP композер.

Прежде всего, вам нужно будет подключиться к вашей учетной записи хостинга через SSH и загрузить все необходимые компоненты. Если вы используете macOS или Linux, вы можете использовать терминал для подключения через SSH, пользователи Windows могут воспользоваться клиентом PuttySSH.

  1. Подключитесь к учетной записи хостинга с помощью SSH.
    В нашем примере это было бы так:
  2. Клонируйте к себе клиент ACME из репозитория github. Клонирование можно выполнить следующей командой:
  3. Переходим в директорию с ACME клиентом:
  4. Скачиваем и устанавливаем композер:
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: