docs(readme): add SSL/TLS configuration section with passphrase and PKCS#12 options

This commit is contained in:
2026-07-04 17:10:04 +03:00
parent 1c6b3d6e8a
commit 1f502c9785

View File

@@ -267,6 +267,60 @@ pytest tests/test_auth.py::test_create_user
> HTML-отчёты coverage по каждому стеку открываются из сводного отчёта по ссылкам.
## 🔐 SSL/TLS конфигурация
### Сертификаты для HTTPS (nginx)
Для включения HTTPS поместите файлы сертификатов в директорию `./certs/`:
**Вариант A — отдельные файлы (без пароля):**
```
./certs/server.crt # SSL сертификат
./certs/server.key # Приватный ключ (незашифрованный)
```
**Вариант B — зашифрованный ключ + пароль:**
```
./certs/server.crt # SSL сертификат
./certs/server.key # Приватный ключ (зашифрован, с DEK-Info)
SSL_KEY_PASSPHRASE=my-passphrase # переменная окружения для расшифровки
```
**Вариант C — PKCS#12 контейнер:**
```
./certs/server.p12 # Контейнер с сертификатом + ключом
SSL_KEY_PASSPHRASE=my-passphrase # пароль от контейнера
```
Entrypoint автоматически:
1. Извлечёт `.crt` и `.key` из `.p12` (если нет отдельных файлов)
2. Расшифрует приватный ключ через `openssl rsa` (если есть `SSL_KEY_PASSPHRASE`)
3. Передаст расшифрованный ключ nginx (ключ остаётся в tmpfs контейнера)
> **Безопасность:** Расшифрованный ключ хранится только в tmpfs `/etc/nginx/ssl/` внутри контейнера и не пишется на диск хоста. Пароль задаётся через переменную окружения, а не через файл на volume.
### Корпоративные CA-сертификаты
Положите `.crt`/`.pem` файлы в `./certs/` — entrypoint установит их в системное хранилище Alpine и NSS (Chromium/Playwright). Поддерживаются цепочки из нескольких CA (Root → Intermediate).
### LLM CA-сертификаты
Если LLM-провайдер использует корпоративный PKI — укажите URL для скачивания CA-сертификатов:
```bash
LLM_CA_CERT_URLS="http://pki.company.com/root-ca.crt http://pki.company.com/intermediate-ca.crt"
```
Сертификаты скачиваются на старте backend-контейнера, конвертируются из DER в PEM при необходимости и устанавливаются в системное хранилище. Подробнее — в [ADR-0009](docs/adr/ADR-0009-ssl-certificate-management.md).
### Диагностика
```bash
# Проверка доверия сертификата
scripts/check_llm_certs.py
# Принудительное отключение TLS verify (только для отладки)
LLM_SSL_VERIFY=false
```
## 🏢 Enterprise Clean Deployment
Для разворота в корпоративной сети с очищенным дистрибутивом (без тестовых данных, с запретом внешних источников и обязательной compliance-проверкой) используется профиль **enterprise clean**.