Skip to content
EN

Как установить SSL на nginx

Коротко:

Установка SSL на nginx за 15 мин с Let's Encrypt: certbot автоматически модифицирует config + включает HTTPS + HTTP→HTTPS redirect. Для manual control — копируем fullchain.pem + privkey.pem в /etc/ssl/, добавляем ssl-блок в server config, включаем HSTS + modern ciphers.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Проверить SSL своего сайта →

Пошаговая настройка

  1. Установите certbot + plugin: apt install certbot python3-certbot-nginx
  2. Убедитесь что domain резолвится на сервер (A-запись)
  3. Auto-install: certbot --nginx -d example.com -d www.example.com
  4. Certbot предложит: redirect HTTP→HTTPS (да, всегда)
  5. Verify: curl -I https://example.com → HTTP/1.1 200 OK
  6. Enable auto-renew: systemctl enable --now certbot.timer
  7. Test: Enterno SSL → grade A+ с правильной cipher suite

Рабочие примеры

СценарийКонфиг
nginx ssl block (manual)server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; }
HTTP→HTTPS redirectserver { listen 80; server_name example.com; return 301 https://$host$request_uri; }
HSTS header (preload-ready)add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
OCSP Staplingssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; resolver 1.1.1.1 valid=60s;
Pre-installed cert (не Let's Encrypt)# cat cert.pem intermediate.pem > fullchain.pem ssl_certificate /etc/ssl/fullchain.pem; ssl_certificate_key /etc/ssl/private.key;

Типичные ошибки

  • Using only cert.pem (без intermediate) → ERR_CERT_AUTHORITY_INVALID у клиентов
  • Missing OCSP Stapling → -10 очков в Qualys SSL Labs grade
  • Weak ciphers (RC4, 3DES) → grade F + Chrome ERR_SSL_VERSION_OR_CIPHER_MISMATCH
  • HSTS без testing — если что-то ломается, клиенты заблокированы на weeks
  • Port 80 закрыт firewall — certbot renewal fails (HTTP-01 challenge)

Как установить SSL-сертификат на nginx — краткий ответ

Для установки SSL-сертификата на nginx, необходимо выполнить несколько шагов: получить сертификат от удостоверяющего центра, установить его на сервер, а затем настроить конфигурацию nginx. В первую очередь, разместите файлы сертификата и ключа в безопасной директории, например, /etc/ssl/certs и /etc/ssl/private. Затем измените конфигурационный файл nginx, добавив секцию для HTTPS, и перезапустите сервис командой sudo systemctl restart nginx.

Подготовка к установке SSL-сертификата

Перед тем как установить SSL-сертификат на сервер с nginx, необходимо выполнить несколько подготовительных шагов:

  1. Выбор удостоверяющего центра (CA): Выберите надежный CA, например, Let's Encrypt, Comodo или DigiCert. Для бесплатного сертификата используйте Let's Encrypt.
  2. Генерация запроса на получение сертификата (CSR): Используйте команду openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr. Ответьте на вопросы, чтобы создать CSR.
  3. Получение сертификата: Отправьте CSR вашему CA и получите SSL-сертификат.
  4. Установка сертификата на сервер: Скопируйте полученные файлы сертификата и ключа в директории, например, /etc/ssl/certs и /etc/ssl/private.

Настройка nginx для работы с SSL-сертификатом

После получения SSL-сертификата и его установки на сервер, необходимо настроить nginx для использования HTTPS. Откройте конфигурационный файл вашего сайта, который обычно находится в /etc/nginx/sites-available/. Добавьте следующие строки:

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /etc/ssl/certs/yourdomain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;

    location / {
        try_files $uri $uri/ =404;
    }
}

Не забудьте изменить yourdomain.com, yourdomain.crt и yourdomain.key на ваши реальные значения. Также рекомендуется настроить редирект с HTTP на HTTPS. Для этого добавьте еще один блок server:

server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

После внесения изменений проверьте конфигурацию на ошибки с помощью команды sudo nginx -t. Если ошибок нет, перезапустите nginx с помощью sudo systemctl restart nginx.

Как установить SSL-сертификат на nginx — краткий ответ

Чтобы установить SSL-сертификат на nginx, необходимо выполнить несколько шагов: сначала получите SSL-сертификат от авторитетного центра сертификации (CA), затем скопируйте файлы сертификата и ключа на сервер. После этого настройте конфигурацию nginx, добавив соответствующие директивы для указания путей к сертификату и ключу, и перезапустите nginx для применения изменений.

Шаги по установке SSL-сертификата на nginx

Установка SSL-сертификата на сервере nginx включает в себя несколько ключевых этапов. Рассмотрим их подробнее.

1. Получение SSL-сертификата

Первым шагом является приобретение SSL-сертификата у аккредитованного центра сертификации (CA), такого как Let's Encrypt, Comodo или DigiCert. Если вы используете Let's Encrypt, вы можете получить бесплатный сертификат с помощью утилиты Certbot. Например:

sudo apt-get install certbot python3-certbot-nginx

После установки Certbot выполните команду для получения сертификата:

sudo certbot --nginx

Следуйте инструкциям на экране, чтобы завершить процесс.

2. Копирование сертификата и ключа на сервер

Если вы получили сертификат в виде файлов, скопируйте их на сервер. Обычно это делается в директорию, такую как /etc/ssl/certs и /etc/ssl/private. Например:

sudo cp your_domain.crt /etc/ssl/certs/
sudo cp your_domain.key /etc/ssl/private/

3. Настройка конфигурации nginx

Теперь необходимо настроить nginx для работы с SSL-сертификатом. Откройте файл конфигурации вашего сайта, который обычно находится в /etc/nginx/sites-available/your_domain и добавьте следующие строки:

server {
    listen 443 ssl;
    server_name your_domain;

    ssl_certificate /etc/ssl/certs/your_domain.crt;
    ssl_certificate_key /etc/ssl/private/your_domain.key;

    location / {
        root /var/www/your_domain;
        index index.html index.htm;
    }
}

Также рекомендуется добавить настройки безопасности, такие как:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

4. Перезапуск nginx

После внесения изменений в конфигурацию необходимо перезапустить nginx, чтобы изменения вступили в силу:

sudo systemctl restart nginx

Теперь ваш сайт должен успешно работать с SSL-сертификатом. Вы можете проверить это, перейдя по адресу вашего сайта с префиксом https://.

5. Настройка автоматического обновления сертификата

Если вы используете Let's Encrypt, сертификаты действительны 90 дней. Вы можете настроить автоматическое обновление, добавив cron-задачу:

sudo crontab -e

Добавьте следующую строку для автоматического обновления сертификата каждый день:

0 0 * * * /usr/bin/certbot renew --quiet

Это обеспечит автоматическое обновление сертификата без вашего вмешательства.

Соблюдая эти шаги, вы сможете установить SSL-сертификат на ваш сервер nginx, обеспечив безопасность данных пользователей и улучшив SEO-позиции вашего сайта.

СертификатСрок, издатель, домены (SAN)
ЦепочкаПроверка промежуточных и корневых CA
TLS-протоколВерсия TLS и набор шифров
УязвимостиHeartbleed, POODLE, слабые шифры

Почему нам доверяют

TLS 1.3
поддержка
Полная
цепочка CA
<2с
результат
30/14/7
дней до истечения

Как это работает

1

Введите домен

2

Проверка цепочки TLS

3

Дата истечения и уязвимости

Что проверяет SSL-тест?

SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.

Детали сертификата

Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).

Цепочка доверия

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

Анализ TLS

Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).

Оповещения об истечении

Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.

DV vs OV vs EV сертификаты

DV (Domain Validation)
  • Подтверждение только владения доменом
  • Выдаётся за минуты автоматически
  • Бесплатно через Let's Encrypt
  • Подходит для большинства сайтов
  • Самый распространённый тип
OV / EV
  • Проверка организации (OV) или расширенная проверка (EV)
  • Выдаётся за 1-5 рабочих дней
  • Стоимость от $50 до $500/год
  • Для финансов, e-commerce, госсайтов
  • Повышает доверие пользователей

Кому это нужно

DevOps

мониторинг SSL-сертификатов

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

аудит TLS-конфигурации

SEO

HTTPS как фактор ранжирования

E-commerce

доверие покупателей

Частые ошибки

Истёкший сертификатБраузеры блокируют сайт с истёкшим SSL. Настройте автопродление или мониторинг.
Неполная цепочка сертификатовБез промежуточного CA некоторые браузеры и боты не смогут верифицировать сертификат.
Mixed content на HTTPS-сайтеHTTP-ресурсы на HTTPS-странице — замок в браузере пропадает, снижается доверие.
Использование TLS 1.0/1.1Устаревшие версии TLS содержат известные уязвимости. Используйте TLS 1.2+ или 1.3.
Несовпадение домена в сертификатеСертификат должен покрывать все домены сайта, включая www и поддомены.

Лучшие практики

Настройте автопродлениеLet's Encrypt + certbot с cron — сертификат обновляется автоматически каждые 60-90 дней.
Включите HSTSЗаголовок Strict-Transport-Security заставляет браузер всегда использовать HTTPS.
Используйте TLS 1.3TLS 1.3 быстрее (1-RTT handshake) и безопаснее — убраны устаревшие шифры.
Мониторьте срок действияСоздайте монитор на Enterno.io — получайте уведомления задолго до истечения.
Проверяйте цепочку после обновленияПосле обновления сертификата убедитесь, что промежуточные сертификаты установлены.

Получите больше с бесплатным аккаунтом

Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

Let's Encrypt подходит для prod?

Да, 100%. Google, Facebook, Cloudflare используют. Единственное ограничение: 90 дней validity (auto-renew решает).

Как установить cert от commercial CA?

Тот же процесс как manual: fullchain.pem = cert + intermediate, отдельно privkey.pem. В nginx — ssl_certificate + ssl_certificate_key.

Certbot модифицирует мой config — безопасно?

Да. Certbot оставляет backup оригинала. Можно откатить: <code>cp nginx.conf.backup nginx.conf</code>.

Как автоматизировать renewal?

systemctl enable --now certbot.timer. Работает 2x в день. На renew hook: <code>--deploy-hook "systemctl reload nginx"</code>.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.