Files
XC_VM/docs/ru/administration/ssl-generation.md
T

142 lines
5.9 KiB
Markdown
Raw Normal View History

# Генерация 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
```
---