# Генерация SSL-сертификата для Nginx в XC_VM В этом руководстве объясняется, как создать самозаверяющий SSL-сертификат, чтобы включить безопасные HTTPS-соединения для встроенного сервера Nginx в проекте XC_VM. > **Примечание:** При новой установке уже генерируется самоподписанный сертификат **уникальный** > автоматически (программа установки запускает `openssl` и записывает `server.key`/`server.crt` > в `bin/nginx/conf/` перед запуском Nginx), а `CertbotCronJob` позже заменяет > с настоящим сертификатом Let's Encrypt. Следуйте этому руководству только для ** восстановления > или замените** сертификат вручную. --- ## Обзор **SSL (уровень защищенных сокетов)** шифрует соединение между клиентом и сервером, обеспечивая конфиденциальность данных и доверие пользователей. В этом руководстве показано, как создать **самозаверяющий SSL-сертификат** для встроенного сервера **Nginx** в проекте **XC_VM**. --- ## Местоположение конфигурации Все файлы, связанные с SSL (ключ, сертификат и конфигурация), хранятся в: ```bash /home/xc_vm/bin/nginx/conf ``` Перейдите в этот каталог, прежде чем продолжить: ```bash cd /home/xc_vm/bin/nginx/conf ``` --- ## Шаг 1. Сгенерируйте закрытый ключ Сгенерировать **2048-битный закрытый ключ RSA**: ```bash openssl genrsa -out server.key 2048 ``` После выполнения появится файл `server.key` — это ваш **закрытый ключ**. Сохраните его **строго конфиденциально** — он используется для подписи SSL-сертификата. --- ## Шаг 2. Создайте конфигурационный файл server.cnf. Создайте файл конфигурации, содержащий параметры сертификата: ```bash cat > server.cnf << EOF [req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] C = RU ST = Moscow L = Moscow O = XC_VM OU = XC_VM CN = XC_VM [v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = XC_VM EOF ``` **Parameter explanation:** |Поле|Ценность|Цель| | --- | --- | --- | | `C` |ру|Страна| | `ST` |Москва|Штат / Провинция| | `L` |Москва|Город/населенный пункт| | `O` | XC_VM |Организация| | `OU` | XC_VM |Организационное подразделение| | `CN` | XC_VM |Общее имя (основное имя хоста)| | `DNS.1` | XC_VM |Альтернативное имя субъекта (SAN)| > **Совет:** Для реальных доменных имен замените `DNS.1 = XC_VM` на ваш реальный домен (например, `DNS.1 = panel.example.com`), чтобы избежать предупреждений браузера. --- ## Шаг 3. Сгенерируйте самозаверяющий SSL-сертификат Сгенерируйте сертификат, используя закрытый ключ и конфигурационный файл: ```bash openssl req -new -x509 -key server.key -out server.crt -days 3650 -config server.cnf ``` **Explanation:** - `-new -x509` — создает новый самозаверяющий сертификат. - `-days 3650` — срок действия сертификата (10 лет) - `-config server.cnf` — использует пользовательскую конфигурацию - Результат: `server.crt` файл, содержащий общедоступный сертификат --- ## Окончательные файлы После выполнения всех шагов в `/home/xc_vm/bin/nginx/conf` должны присутствовать следующие файлы: |Файл|Цель| | --- | --- | | `server.key` |Закрытый ключ| | `server.crt` |Самозаверяющий SSL-сертификат| | `server.cnf` |Файл конфигурации сертификата| --- ## Результат Ваш **XC_VM Сервер Nginx** теперь доступен через **https** с помощью недавно созданного самозаверяющего сертификата. Браузеры будут отображать предупреждение “не доверенный” — это ожидаемое поведение для самозаверяющих сертификатов. --- ## Записи - Подходят самозаверяющие сертификаты **только для внутреннего использования или тестирования**. - Для общедоступных доменов используйте сертификаты от доверенных центров сертификации (например, [Let's Encrypt](https://letsencrypt.org/)). - Если вы измените имя домена/хоста (`CN` или `DNS.1`), вы получите сертификат **должен восстановиться**. - Чтобы проверить сгенерированный сертификат: ```bash openssl x509 -in server.crt -text -noout ``` ---