L o a d i n g
Установка бесплатного SSL-сертификата на сервер и настройка редиректа через Nginx Сервер

В современном мире безопасность веб-сайтов становится одним из ключевых аспектов. Использование HTTPS вместо HTTP не только защищает данные пользователей, но и улучшает SEO-показатели сайта. В этой статье мы рассмотрим, как установить бесплатный SSL-сертификат с помощью сервиса Let's Encrypt и настроить редирект с HTTP на HTTPS через веб-сервер Nginx.

Шаг 1: Подготовка сервера

Прежде чем начать, убедитесь, что:

  • У вас есть доступ к серверу (например, через SSH).
  • На сервере установлен Nginx.
  • Ваш домен уже привязан к IP-адресу сервера через DNS.

Если Nginx еще не установлен, выполните следующие команды:

sudo apt update
sudo apt install nginx -y

Проверьте статус Nginx:

sudo systemctl status nginx

Если Nginx работает, вы увидите сообщение active (running).

Шаг 2: Установка Certbot для получения SSL-сертификата

Certbot — это инструмент, который автоматизирует процесс получения и обновления SSL-сертификатов от Let's Encrypt.

Установка Certbot

Для Ubuntu выполните следующие команды:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

Здесь python3-certbot-nginx — это плагин Certbot, который интегрируется с Nginx.

Шаг 3: Получение SSL-сертификата

Теперь можно получить SSL-сертификат для вашего домена. Запустите Certbot с плагином Nginx:

sudo certbot --nginx -d your-domain.com -d www.your-domain.com

Замените your-domain.com на ваш реальный домен. Если у вас есть поддомены (например, www.your-domain.com), добавьте их через -d.

Certbot выполнит следующие действия:

  • Проверит, что домен указывает на ваш сервер.
  • Создаст SSL-сертификат.
  • Автоматически настроит Nginx для использования HTTPS.

После завершения Certbot предложит выбрать, хотите ли вы автоматически перенаправлять трафик с HTTP на HTTPS. Выберите опцию 2 для автоматического редиректа.

Шаг 4: Проверка конфигурации Nginx

После успешной установки сертификата Certbot автоматически изменит конфигурационный файл Nginx. Проверьте его содержимое:

sudo nano /etc/nginx/sites-available/your-domain.com

Вы должны увидеть что-то вроде этого:

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your-domain.com www.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8080; # Пример для приложения
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Здесь:

  • Первый блок server перенаправляет весь трафик с HTTP на HTTPS.
  • Второй блок server настроен на использование SSL-сертификата.

Сохраните файл и проверьте конфигурацию Nginx на наличие ошибок:

sudo nginx -t

Если тест успешен, перезапустите Nginx:

sudo systemctl reload nginx

Шаг 5: Автоматическое обновление сертификата

SSL-сертификаты от Let's Encrypt действительны только 90 дней. Однако Certbot автоматически создает задачу для их обновления. Проверьте, что задача работает:

sudo certbot renew --dry-run

Если команда выполнится без ошибок, обновление настроено корректно.

Шаг 6: Проверка работы HTTPS

Откройте браузер и перейдите по адресу https://your-domain.com. Вы должны увидеть замок в адресной строке, что означает, что SSL работает корректно.

Также проверьте редирект с HTTP на HTTPS, открыв http://your-domain.com. Вы должны быть автоматически перенаправлены на HTTPS.

Дополнительные настройки безопасности (опционально)

Для повышения безопасности можно добавить дополнительные параметры в конфигурацию Nginx:

server {
    listen 443 ssl http2;
    server_name your-domain.com www.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    add_header X-XSS-Protection "1; mode=block";

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Эти настройки:

  • Отключают устаревшие протоколы (например, TLS 1.0 и 1.1).
  • Добавляют заголовки безопасности, такие как HSTS, чтобы браузеры всегда использовали HTTPS.

После внесения изменений проверьте конфигурацию и перезапустите Nginx:

sudo nginx -t
sudo systemctl reload nginx

Заключение

Теперь ваш сайт защищен бесплатным SSL-сертификатом от Let's Encrypt, а весь трафик автоматически перенаправляется с HTTP на HTTPS. Это не только повысит безопасность вашего сайта, но и улучшит доверие пользователей и поисковых систем.

Если у вас возникли вопросы или проблемы, не стесняйтесь обращаться за помощью!

Написать комментарий

Вы можете оставить комментарий автору статьи Обязательные поля помечены *