Приветствую всех, сегодня мы поговорим о том как настроить инфраструктуру для своего домена на базе Ubuntu-Server 24.04 LTS.

  1. Установка и настройка http-сервера NGINX.
  2. Установка и настройка Postfix.
  3. Настройка 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