Приветствую всех, сегодня мы поговорим о том как настроить инфраструктуру для своего домена на базе Ubuntu-Server 24.04 LTS.
- Установка и настройка http-сервера NGINX.
- Установка и настройка Postfix.
- Настройка DNS на примере рег.ру(reg.ru).
Nginx Ссылка на заголовок
Сама по себе установка сервера сводится всего к одной команде
sudo apt-get update && sudo apt-get install nginx
В интернете имеется множество руководств по установке и настройке nginx, однако, есть некоорые нюансы.
Настройка SSL (Secure Socket Layer) Ссылка на заголовок
Во наше время SSL-сертификат это уже необходимость а не роскошь, конечно можно обойтись и без него, но доверия к сайту/блогу не будет даже у поисковиков, это не говоря о том что при переходе на ваш сайт пользователь будет видет явное предупреждение в адресной строке о том что подключение не защищено, что визуально “напрягает” и вызывает некоторый дискомфорт. Для своих доменов я приобретал сертификаты AlphaSSL от GlobalSign, но можно обойтись и бесплатными вариантами, к примеру: Lets encrypt.
Итак, в чём заключалась сложность в моём случае: Изначально в качестве http-сервера я использовал Apache 2.4.61 и для хостинга одного домена этого было более чем достаточно, тем более что на рег.ру есть достаточно подробный мануал по настройке SSL именно для Apache, однако, когда я решил установить почтовый сервер Postfix я столкнулся с проблемой настройки TLS/SSL - он упорно отказывался работать с этими сертификатами. Суть в том что формат сертификатов не подходят для подключения к nginx и postfix, их необходимо немного “допилить”. Очень долго расспрашивал Алису как правильно сконфишурировать цепочку сертификатов до тех пор пока сам не полез в мануалы Postfix. Цепочка сертификатов предоставляемая рег.ру на самой деле неполная, postfix-у нужна полная цепочка, то есть, в файле цепочки(boundle.crt) должна быть последовательность разделённая пустой строкой: сам заверенный сертификат → промежуточный сертификат → запрос на сертификат.
Создание полной цепочки Ссылка на заголовок
Есть несколько вариантов это сделать:
- через терминал (bash)
- при помощи любого текстового редактора с однобайтовой кодировкой или UTF-8
В любом из случаев изначально нам понадобятся сами сертификаты и ключ.
Пример для Reg.ru:
- Заходим в личный кабинет и жмакаем на “SSL” в меню слева.
- Находим нужный нам сертификат и жмакаем на него.
- В разделе “Файлы сертификата” видим слующие файлы:
- Сертификат
- CSR-запрос
- Корневой сертификат
- Private Key
- В отдельную папку на диске скачиваем “Сертификат” в формате “.PEM” и остальные 3 файла как есть, открываем папку и видим 4 файла:
- certificate.crt → Сертификат
- crtificate.csr → CSR-запрос
- certificate.key → Приватный ключ (Private Key)
- certificate_ca.crt → Корневой сертификат
С чем работать у нас есть, теперь разберёмся как это сделать:
Наша задача совместить 2 файла: certificate.crt и certificate_ca.crt, при чём обязательно именно в таком порядке. Понять правльно ли вы совместили эти 2 файла просто до безобразия:
-----BEGIN CERTIFICATE-----
(Самый большой блок непонятных кракозябр)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Средний по размеру блок непонятных кракозябр)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Самый скудный на кракозябры блок)
-----END CERTIFICATE-----
В принципе в этом и заключается вся суть создания полной цепочки сертификатов, сохраняем файл как boundle-example.com.crt и на этом наши страдания заканчиваются. Главное не перепутать certificate.crt и certificate.csr(отличить можно по тегу: ’—–BEGIN CERTIFICATE—–’ - это сертификат certificate.crt, а ’—–BEGIN CERTIFICATE REQUEST—–’ - это запрос certificate.csr)!
Как создать цепочку при помощи текстового редакотры мы рассмотрели, теперь рассмотрим как нам это сделать через терминал:
- запускаем терминал (Ctrl + Alt + T)
- открываем папку с файлами в терминале и вводим команду (или копируем и вставляем в командную строку при помощи Shift + Ctrl + V и заменяем
mysite.ruна ваш)
(cat certificate.crt; printf '\n'; cat certificate_ca.crt) > boundle-mysite.crt
или сразу в корневую папку всех SSL-сертификатов
sudo (cat certificate.crt; printf '\n'; cat certificate_ca.crt) > /etc/ssl/certs/boundle-mysite.ru.crt