Skip to content

Настройка nginx для разработки на локальном компьютере

Notifications You must be signed in to change notification settings

Paralipupa/nginx-local

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Генерация SSL-сертификатов

Этот проект содержит инструменты для автоматической генерации и установки SSL-сертификатов, включая wildcard-сертификаты.

Структура проекта

Предварительные требования

  • Установленный OpenSSL
  • GNU Make
  • Наличие корневого сертификата (rootCA.crt) и ключа (rootCA.key) в директории generate/ (необязательно)

Использование

Основные команды

  1. Генерация всех сертификатов и их установка:
make all
  1. Очистка всех сгенерированных файлов:
make clean
  1. Только установка существующих сертификатов:
make install

Процесс генерации

При выполнении make all происходит следующее:

  1. Создается wildcard-сертификат и ключ
  2. Генерируется CSR (Certificate Signing Request)
  3. Сертификат подписывается корневым CA
  4. Генерируются DH параметры
  5. Все файлы копируются в директорию certs/

Результаты генерации

После успешного выполнения в директории certs/ появятся следующие файлы:

  • default.crt - основной сертификат
  • default.key - приватный ключ
  • dhparam.pem - файл с DH параметрами

Далее необходимо зарегистрировать корневой сертификат rootCA.crt из build/ в вашей системе.

Устранение неполадок

Распространенные проблемы

  1. Ошибка "No such file or directory":

    • Убедитесь, что все необходимые директории существуют
    • Проверьте наличие rootCA.crt и rootCA.key в директории generate/
  2. Ошибка при подписании сертификата:

    • Проверьте права доступа к rootCA.key
    • Убедитесь в корректности конфигурационного файла wildcard.cnf

Проверка сертификата

Для проверки сгенерированного сертификата выполните:

openssl x509 -in certs/default.crt -text -noout

Безопасность

  • Храните приватные ключи (*.key) в безопасном месте
  • Не добавляйте приватные ключи в систему контроля версий
  • Рекомендуется установить ограниченные права доступа на файлы сертификатов:
    chmod 600 certs/default.key

## Поддержка

При возникновении проблем:
1. Проверьте наличие всех необходимых файлов
2. Убедитесь в корректности прав доступа
3. Проверьте логи OpenSSL при возникновении ошибок

## Лицензия

[Укажите вашу лицензию]

### Регистрация корневого сертификата

После генерации сертификатов необходимо зарегистрировать корневой сертификат в вашей системе:

#### Linux (Ubuntu/Debian)
```bash
# Копируем сертификат в директорию доверенных сертификатов
sudo cp generate/rootCA.crt /usr/local/share/ca-certificates/
# Обновляем хранилище сертификатов
sudo update-ca-certificates

macOS

# Добавляем сертификат в Keychain
sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" generate/rootCA.crt

Windows

  1. Нажмите Win + R, введите certmgr.msc и нажмите Enter
  2. Разверните папку "Доверенные корневые центры сертификации"
  3. Правой кнопкой мыши нажмите на "Сертификаты" -> "Все задачи" -> "Импортировать"
  4. Следуйте инструкциям мастера импорта и укажите путь к файлу generate/rootCA.crt

Firefox

Firefox использует собственное хранилище сертификатов:

  1. Откройте настройки Firefox
  2. Перейдите в раздел "Приватность и защита"
  3. Прокрутите вниз до раздела "Сертификаты" и нажмите "Просмотр сертификатов"
  4. Перейдите на вкладку "Центры сертификации"
  5. Нажмите "Импортировать" и выберите файл generate/rootCA.crt
  6. Отметьте "Доверять при идентификации веб-сайтов"

После установки корневого сертификата браузеры будут доверять вашим локальным SSL-сертификатам.

Примечание: Добавление корневого сертификата в систему требует прав администратора.

Настройка доменных имен

1. Конфигурация wildcard.cnf

Перед генерацией сертификатов необходимо отредактировать файл generate/build/wildcard.cnf и указать все необходимые доменные имена в секции [alt_names]:

[alt_names]
DNS.1 = *.local
DNS.2 = local
DNS.3 = *.test.local
DNS.4 = test.local
# Добавьте дополнительные домены по необходимости:
# DNS.5 = *.dev.local
# DNS.6 = dev.local

2. Настройка hosts

После генерации сертификатов необходимо добавить соответствующие записи в файл hosts:

Linux/macOS

Отредактируйте файл /etc/hosts:

sudo nano /etc/hosts

Добавьте следующие строки:

127.0.0.1   test.local
127.0.0.1   api.test.local
127.0.0.1   admin.test.local
# Добавьте другие поддомены по необходимости
Windows
  1. Откройте блокнот от имени администратора
  2. Откройте файл C:\Windows\System32\drivers\etc\hosts
  3. Добавьте те же строки:
127.0.0.1   test.local
127.0.0.1   api.test.local
127.0.0.1   admin.test.local

Пример полной конфигурации для локальной разработки

  1. В wildcard.cnf:
[alt_names]
DNS.1 = *.local
DNS.2 = local
DNS.3 = *.test.local
DNS.4 = test.local
DNS.5 = *.dev.local
DNS.6 = dev.local
  1. В файле hosts:
127.0.0.1   test.local
127.0.0.1   api.test.local
127.0.0.1   admin.test.local
127.0.0.1   dev.local
127.0.0.1   api.dev.local
127.0.0.1   admin.dev.local

После внесения изменений:

  1. Выполните make clean && make all для перегенерации сертификатов
  2. Перезапустите веб-сервер
  3. Очистите кэш браузера

Примечание: Изменения в файле hosts вступают в силу немедленно, перезагрузка системы не требуется.

Запуск Nginx в Docker

После генерации сертификатов и настройки доменных имен необходимо запустить Nginx для обработки HTTPS-запросов.

1. Запуск через docker-compose

# Запуск в фоновом режиме
docker-compose up -d

# Просмотр логов
docker-compose logs -f

# Остановка сервисов
docker-compose down

2. Проверка работоспособности

После запуска проверьте доступность ваших доменов через HTTPS:

# Проверка основного домена
curl -k https://test.local

# Проверка поддоменов
curl -k https://api.test.local
curl -k https://admin.test.local

3. Структура docker-compose

Проект использует следующую конфигурацию docker-compose:

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs:/etc/nginx/certs
    networks:
      - web

Возможные проблемы

  1. Ошибка при запуске контейнера:

    • Проверьте, что все необходимые сертификаты находятся в директории certs/
    • Убедитесь, что порты 80 и 443 не заняты другими процессами
  2. Ошибка SSL в браузере:

    • Проверьте, что корневой сертификат установлен в системе
    • Убедитесь, что домены правильно прописаны в hosts
    • Очистите кэш браузера

Примечание: Для работы с docker-compose необходимо иметь установленный Docker и docker-compose.

About

Настройка nginx для разработки на локальном компьютере

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published