SSL сертификаты
Использование собственных SSL сертификатов (основной способ)
Если у вас есть собственные SSL сертификаты, выполните следующие шаги:
Шаг 1: Подготовьте файлы сертификатов
Вам потребуются:
- Файл сертификата (обычно
.crtили.pem) - Файл приватного ключа (обычно
.key) - (Опционально) Цепочка сертификатов (chain/intermediate certificates)
Шаг 2: Разместите сертификаты в нужной директории
- Создайте директорию для вашего домена
mkdir -p ./certbot/conf/live/your-domain.com/
-
Скопируйте сертификат (если у вас есть chain, объедините их)
-
Формат fullchain.pem: ваш сертификат + промежуточные сертификаты
cat your-certificate.crt intermediate.crt > ./certbot/conf/live/your-domain.com/fullchain.pem
- Если у вас уже есть полная цепочка
cp your-fullchain.pem ./certbot/conf/live/your-domain.com/fullchain.pem
- Скопируйте приватный ключ
cp your-private.key ./certbot/conf/live/your-domain.com/privkey.pem
- Установите права доступа
chmod 644 ./certbot/conf/live/your-domain.com/fullchain.pem
chmod 600 ./certbot/conf/live/your-domain.com/privkey.pem
Шаг 3: Создайте DH параметры (для повышенной безопасности)
openssl dhparam -out ./certbot/conf/ssl-dhparams.pem 2048
Этот процесс может занять несколько минут.
Шаг 4: Настройте Nginx
Отредактируйте файл ./nginx/nginx.conf:
-
В секции HTTP сервера (порт 80) раскомментируйте редирект на HTTPS:
server {
listen 80;
server_name your-domain.com; # Замените на ваш домен
return 301 https://$server_name$request_uri;
} -
Раскомментируйте блок HTTPS сервера (строки 112-177) и настройте:
server {
listen 443 ssl;
server_name your-domain.com; # Замените на ваш домен
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /etc/nginx/ssl/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/your-domain.com/privkey.pem;
ssl_dhparam /etc/nginx/ssl/ssl-dhparams.pem;
# ...
}
Шаг 5: Проверьте конфигурацию и перезапустите
- Проверьте конфигурацию Nginx
docker compose exec nginx nginx -t
- Если проверка успешна, перезапустите Nginx
docker compose restart nginx
Шаг 6: Обновите конфигурацию YouGile
- Отредактируйте
./yougile/conf.jsonи укажите HTTPS URL:
{
"mainPageUrl": "https://your-domain.com"
}
- Перезапустите YouGile:
docker compose restart yougile
Автоматическое получение сертификатов через Let's Encrypt (альтернативный способ)
Если у вас нет собственных сертификатов, вы можете получить бесплатные от Let's Encrypt:
Шаг 1: Убедитесь, что домен указывает на ваш сервер
Проверка DNS записи:
nslookup your-domain.com
Шаг 2: Получение сертификата
docker compose run --rm certbot certonly --webroot \
-w /var/www/certbot \
-d your-domain.com \
--email your-email@example.com \
--agree-tos \
--no-eff-email
Шаг 3: Настройте Nginx
Следуйте шагам 4-6 из раздела "Использование собственных SSL сертификатов" выше.
Шаг 4: Автоматическое обновление сертификатов
Let's Encrypt сертификаты действительны 90 дней. Настройте автообновление:
sudo crontab -e
- Добавьте строку:
0 12 * * * cd /path/to/your/project && docker compose run --rm certbot renew --quiet && docker compose restart nginx
Проверка SSL
- Проверка доступности через HTTPS
curl -I https://your-domain.com
- Подробная информация о сертификате
openssl s_client -connect your-domain.com:443 -servername your-domain.com
- Проверка срока действия сертификата
echo | openssl s_client -servername your-domain.com -connect your-domain.com:443 2>/dev/null | openssl x509 -noout -dates
Решение проблем с SSL
Ошибка "certificate verify failed":
- Убедитесь, что в fullchain.pem включены промежуточные сертификаты
- Проверьте правильность цепочки:
openssl verify -CAfile intermediate.crt your-certificate.crt
Ошибка "permission denied":
- Проверьте права доступа к файлам сертификатов
- privkey.pem должен иметь права 600
Браузер показывает предупреждение о безопасности:
- Проверьте, что домен в сертификате совпадает с доменом в адресной строке
- Убедитесь, что сертификат не истек:
openssl x509 -in fullchain.pem -noout -dates