Главная/Установка/SSL на Nginx

SSL на Nginx: настройка сертификата и HTTPS

SSL на Nginx включают в блоке server: порт 443 с параметром ssl, директива ssl_certificate с путём к сертификату и ssl_certificate_key с путём к приватному ключу. Остальное доделывается за несколько минут: цепочка в одном файле, отдельный блок для порта 80 и проверка конфига перед перезагрузкой.

4 мин чтенияДанные проверены 19 октября 2026

Ответ за 30 секунд

Вам нужны два файла и два пути в конфиге: сертификат вместе с промежуточными и приватный ключ. Затем nginx -t и reload. Если файл сертификата собран в неверном порядке, Nginx не запустится и напишет «key values mismatch».

Бесплатный Let's Encrypt или платный на 6 месяцев: выпуск от 15 минут, любой можно вернуть за 7 дней.

01 · 1 мин

Какие файлы Nginx нужны для SSL-сертификата#

Nginx читает сертификат и ключ с диска, поэтому сначала нужно собрать два файла. Первый содержит ваш сертификат и следом за ним промежуточные сертификаты центра сертификации. Второй хранит приватный ключ, который создавался вместе с запросом CSR.

ИсточникФайл для ssl_certificateФайл для ssl_certificate_key
Certbot (Let's Encrypt)/etc/letsencrypt/live/example.com/fullchain.pem/etc/letsencrypt/live/example.com/privkey.pem
Платный сертификатСобранный вручную файл: сертификат + промежуточныеВаш .key, созданный до заявки

Для платного сертификата центр присылает отдельно ваш сертификат и пакет промежуточных. Склейте их в таком порядке: сначала ваш, потом пакет.

cat example.com.crt ca-bundle.crt > example.com.fullchain.pem

Если поменять порядок, Nginx сопоставит ключ с первым сертификатом из файла, не найдёт пары и откажется стартовать. Подробнее о том, чем отличаются .pem, .crt и .key: форматы сертификатов.

02 · 1 мин

Как выглядит блок server с SSL в Nginx#

Откройте конфигурацию сайта, обычно это файл в /etc/nginx/conf.d/ или /etc/nginx/sites-available/, и добавьте блок для порта 443.

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com www.example.com;

    ssl_certificate     /etc/nginx/ssl/example.com.fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;

    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;

    root  /var/www/example.com;
    index index.html;
}

Параметр ssl после номера порта говорит Nginx принимать на нём зашифрованные соединения. Протоколы TLS 1.2 и 1.3 в документации Nginx указаны значением по умолчанию, строку можно оставить для наглядности. Общий кэш сессий shared:SSL:10m позволяет вернувшимся посетителям не проходить рукопожатие заново: в документации сказано, что 1 МБ кэша вмещает около 4000 сессий.

Права на ключ

Приватный ключ читает только процесс Nginx и администратор. Поставьте владельцем root и права 600. Что будет, если ключ утечёт: приватный ключ сертификата.

HTTP/2 в Nginx с версии 1.25.1 включается отдельной директивой http2 on; в том же блоке. Параметр http2 в строке listen с этой версии считается устаревшим.

03 · 1 мин

Как отправить посетителей с порта 80 на HTTPS в Nginx#

Адреса со старым http:// уже стоят в закладках и ссылках, поэтому порт 80 оставляют и заставляют его отвечать переадресацией. Сделайте для него отдельный короткий блок.

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Код 301 сообщает поисковикам, что адрес переехал насовсем, а $request_uri сохраняет путь и параметры: страница /catalog/?id=5 откроется по https на том же месте. Варианты для Apache и WordPress собраны на странице редирект на https.

04 · 1 мин

Как проверить и применить конфиг Nginx с SSL#

  1. Проверьте синтаксис. Команда sudo nginx -t читает конфиг и сообщает об ошибке до того, как сайт упадёт.
  2. Перечитайте конфиг. sudo systemctl reload nginx применит изменения без разрыва текущих соединений.
  3. Откройте сайт по https. В адресной строке должен появиться замок, а срок и издателя можно посмотреть в свойствах сертификата.
  4. Проверьте цепочку из консоли. Команда ниже покажет, какие сертификаты отдаёт сервер.
openssl s_client -connect example.com:443 -servername example.com

Если в выводе виден только ваш сертификат без промежуточных, браузеры на телефонах могут ругаться, а настольные нет. Разбор приёмов проверки: как проверить SSL-сертификат.

05 · 1 мин

Почему Nginx не запускается после подключения SSL#

Что пишет Nginx или браузерПричинаЧто делать
key values mismatchКлюч не от этого сертификата или файл склеен в обратном порядкеСверьте пару командами ниже, пересоберите файл: сначала ваш сертификат
No such file or directoryНеверный путь в ssl_certificate или ssl_certificate_keyУкажите полный путь и проверьте права на каталог
Сайт не открывается по https, по http работаетПорт 443 закрыт или нет listen 443 sslОткройте порт в файрволе, см. проверку порта 443
«Имя не совпадает»В server_name или в сертификате нет нужного домена, например wwwРазбор ошибки имени

Чтобы убедиться, что сертификат и ключ составляют пару, сравните отпечатки их модулей. Способ работает для ключей RSA, и значения должны совпасть.

openssl x509 -noout -modulus -in example.com.fullchain.pem | openssl md5
openssl rsa  -noout -modulus -in example.com.key | openssl md5

06 · 1 мин

Вопросы о подключении SSL к Nginx#

Какие директивы нужны для SSL на Nginx?

Минимум три: listen 443 ssl в блоке server, ssl_certificate с путём к сертификату и ssl_certificate_key с путём к приватному ключу.

Можно ли подключить бесплатный сертификат к Nginx без ручной склейки файлов?

Да. Certbot кладёт в каталог /etc/letsencrypt/live/ваш-домен/ готовый fullchain.pem и privkey.pem, достаточно указать эти пути. Порядок команд описан на странице про Certbot.

Нужно ли перезапускать Nginx после замены сертификата в конфиге?

Хватит reload: он перечитывает файлы без остановки сайта. Перед ним запустите nginx -t.

Где в конфиге Nginx указывают промежуточный сертификат?

Отдельной директивы нет: промежуточные сертификаты идут в том же файле, что и ваш, сразу после него. Его путь пишут в ssl_certificate.

Почему этому можно верить

Как мы проверяли

Документация и провайдерыКоманды выпуска и установки сверены с документацией, дата указана.
Всё можно повторитьКоманды certbot и openssl описаны так, что их повторит любой читатель.
Независимый справочникНе связан с центрами сертификации и честно говорит, когда хватает бесплатного SSL.

Источники цифр на этой странице: SSL-сертификаты Таймвеб, timeweb.com/ru/services/domains/ssl, проверено 19 октября 2026; Let's Encrypt: документация, letsencrypt.org/docs, проверено 19 октября 2026; Nginx: настройка HTTPS-серверов (директивы ssl_certificate, цепочка, кэш сессий), nginx.org/en/docs/http/configuring_https_servers.html, проверено 19 октября 2026.

SBРедакция SSLBase · обновлено 19 октября 2026

Подключите SSL к сайту

От бесплатного Let's Encrypt до платных сертификатов GlobalSign с гарантийной выплатой и установкой под ключ. Любой можно вернуть за 7 дней.

  • Бесплатный Let's Encrypt на домен
  • Платные от 1 000 ₽ за 6 месяцев
  • Wildcard на все поддомены
  • 7 дней на возврат