Этот проект содержит инструменты для автоматической генерации и установки SSL-сертификатов, включая wildcard-сертификаты.
- Установленный OpenSSL
- GNU Make
- Наличие корневого сертификата (rootCA.crt) и ключа (rootCA.key) в директории
generate/(необязательно)
- Генерация всех сертификатов и их установка:
make all- Очистка всех сгенерированных файлов:
make clean- Только установка существующих сертификатов:
make installПри выполнении make all происходит следующее:
- Создается wildcard-сертификат и ключ
- Генерируется CSR (Certificate Signing Request)
- Сертификат подписывается корневым CA
- Генерируются DH параметры
- Все файлы копируются в директорию
certs/
После успешного выполнения в директории certs/ появятся следующие файлы:
default.crt- основной сертификатdefault.key- приватный ключdhparam.pem- файл с DH параметрами
Далее необходимо зарегистрировать корневой сертификат rootCA.crt из build/ в вашей системе.
-
Ошибка "No such file or directory":
- Убедитесь, что все необходимые директории существуют
- Проверьте наличие rootCA.crt и rootCA.key в директории generate/
-
Ошибка при подписании сертификата:
- Проверьте права доступа к 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
# Добавляем сертификат в Keychain
sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" generate/rootCA.crt- Нажмите Win + R, введите
certmgr.mscи нажмите Enter - Разверните папку "Доверенные корневые центры сертификации"
- Правой кнопкой мыши нажмите на "Сертификаты" -> "Все задачи" -> "Импортировать"
- Следуйте инструкциям мастера импорта и укажите путь к файлу
generate/rootCA.crt
Firefox использует собственное хранилище сертификатов:
- Откройте настройки Firefox
- Перейдите в раздел "Приватность и защита"
- Прокрутите вниз до раздела "Сертификаты" и нажмите "Просмотр сертификатов"
- Перейдите на вкладку "Центры сертификации"
- Нажмите "Импортировать" и выберите файл
generate/rootCA.crt - Отметьте "Доверять при идентификации веб-сайтов"
После установки корневого сертификата браузеры будут доверять вашим локальным SSL-сертификатам.
Примечание: Добавление корневого сертификата в систему требует прав администратора.
Перед генерацией сертификатов необходимо отредактировать файл 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После генерации сертификатов необходимо добавить соответствующие записи в файл hosts:
Отредактируйте файл /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
# Добавьте другие поддомены по необходимости
- Откройте блокнот от имени администратора
- Откройте файл
C:\Windows\System32\drivers\etc\hosts - Добавьте те же строки:
127.0.0.1 test.local
127.0.0.1 api.test.local
127.0.0.1 admin.test.local
- В
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- В файле
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
После внесения изменений:
- Выполните
make clean && make allдля перегенерации сертификатов - Перезапустите веб-сервер
- Очистите кэш браузера
Примечание: Изменения в файле hosts вступают в силу немедленно, перезагрузка системы не требуется.
После генерации сертификатов и настройки доменных имен необходимо запустить Nginx для обработки HTTPS-запросов.
# Запуск в фоновом режиме
docker-compose up -d
# Просмотр логов
docker-compose logs -f
# Остановка сервисов
docker-compose downПосле запуска проверьте доступность ваших доменов через HTTPS:
# Проверка основного домена
curl -k https://test.local
# Проверка поддоменов
curl -k https://api.test.local
curl -k https://admin.test.localПроект использует следующую конфигурацию 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-
Ошибка при запуске контейнера:
- Проверьте, что все необходимые сертификаты находятся в директории
certs/ - Убедитесь, что порты 80 и 443 не заняты другими процессами
- Проверьте, что все необходимые сертификаты находятся в директории
-
Ошибка SSL в браузере:
- Проверьте, что корневой сертификат установлен в системе
- Убедитесь, что домены правильно прописаны в hosts
- Очистите кэш браузера
Примечание: Для работы с docker-compose необходимо иметь установленный Docker и docker-compose.