Настройка NGiNX и его виртуальных хостов для передачи данных Certbot

После того, как в настройках плагина Webroot прописана папка, в которой будут храниться необходимые для проверки прав Certbot'ом на домен файлы для получения и обновления SSL-сертификатов Let's Encrypt (для перевода работы сайтов по протоколу HTTPs), нужно настроить веб-сервер NGiNX и поддерживаемые им виртуальные хосты для передачи этих файлов по запросу под всеми доменами, для которых требуется работа по HTTPs. Как это сделать и будет рассмотрено ниже в этой статье.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

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

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Для чего производится настройка NGiNX и его виртуальных хостов

Итак, у нас в настройках letsencrypt в конфиге /etc/letsencrypt/cli.ini прописано, что аутентификация проходит с помощью плагина Webroot (строка authenticator = webroot) и то, что все нужные для аутентификации файлы нужно искать в указанной папке (строка webroot-path = /var/www/html).

Исходя из этих данных, Certbot при необходимости аутентификации будет искать нужные ему файлы в папке /var/www/html/.well-known/acme-challenge/, запрашивая её содержимое по доменному имени, на который создаётся или продлевается сертификат по адресу: http://www.example.com/.well-known/acme-challenge/authentication.php. Файл будет конечно не authentication.html, а тот, что создаст Certbot, но папка будет именно эта.

Наша задача: делать так, чтобы одна папка на сервере (/var/www/html/.well-known/acme-challenge/) была доступна для выдачи документов со всех доменов (виртуальных хостов NGiNX). Именно этим и займёмся.

Для контроля, как всё работаем, создадим этот файл authentication.html в этой папке примерно такого содержания:

Ответ из папки <pre>/var/www/html/.well-known/acme-challenge/</pre> получен!

Настройка NGiNX и его виртуальных хостов для получения SSL-сертификатов Let's Encrypt

Для того, чтобы любой виртуальный хост NGiNX мог при запросе к папке /.well-known отдавать документы из папки /var/www/html на сервере (а не искать её в своей локальной папке хоста), нужно ко всем виртуальным хостам добавить запись об этом:

location /.well-known {
    root /var/www/html;
}

Так хостов на сервере не один и не два, создадим файл letsencrypt с этой записью, поместим его в папку настроек NGiNX /etc/nginx и будем вызывать при необходимости в конфигах виртуальных хостов:

include /etc/nginx/letsencrypt;

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

# echo -e "location /.well-known {\n\troot /var/www/html;\n}" > /etc/nginx/letsencrypt

После этого нужно добавить запись include /etc/nginx/letsencrypt; во всех блоках server перед всеми блоками location, (если они есть) в конфигах виртуальных хостов, которым нужен SSL-сертификат.

Смена пользователя папки /.well-known для успешной работы letsencrypt

Если все работы ведутся не под тем пользователем, под которым будет производиться автоматическая аутентификация letsencrypt, (а это так), то нужно назначить правильные права доступа к этой папке. Для этого нужно вспомнить (или узнать) под каким пользователем работает NGiNX на сервере. Для этого нужно посмотреть строку в конфиге NGiNX /etc/nginx/nginx.conf. Обычно она первая в конфиге и выглядит так:

user  www-data;

Обычно пользователь www-data входит в группу www-data, но для того, чтобы узнать это наверняка, можно выполнить команду:

# groups www-data

Осталось поменять права доступа на папку /var/www/html/.well-known и всё, что в неё вложено:

# chown -hR www-data:www-data /var/www/html/.well-known

После этого нужно перезагрузить NGiNX:

# systemctl restart nginx

Теперь по запросу с любого домена (при обращении к любому виртуальному хосту) вида: http://site.ru/.well-known/acme-challenge/authentication.html, где были внесены описанные выше вставки include /etc/nginx/letsencrypt;, должен открываться наш файл authentication.php. Это значит, всё настроено правильно и можно удалить наш тестовый файл (чтобы не болтался на сервере и не мешал работе certbot).

Резюме

Таким образом мы настроили работу NGiNX и его виртуальных хостов для получения SSL-сертификатов Let's Encrypt, открыв папку /var/www/html/.well-known/acme-challenge/ для ответов с любого домена, так что Certbot сможет записать на диск сервера то, что ему нужно, а затем прочитать в ответе сервера на запрос по доменному имени.

Можно приступать непосредственно к получению SSL-сертификатов Let's Encrypt.

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню