Главная/Установка/SSL на Nginx
SSL на Nginx: настройка сертификата и HTTPS
SSL на Nginx включают в блоке server: порт 443 с параметром ssl, директива ssl_certificate с путём к сертификату и ssl_certificate_key с путём к приватному ключу. Остальное доделывается за несколько минут: цепочка в одном файле, отдельный блок для порта 80 и проверка конфига перед перезагрузкой.
Ответ за 30 секунд
Вам нужны два файла и два пути в конфиге: сертификат вместе с промежуточными и приватный ключ. Затем nginx -t и reload. Если файл сертификата собран в неверном порядке, Nginx не запустится и напишет «key values mismatch».
Бесплатный Let's Encrypt или платный на 6 месяцев: выпуск от 15 минут, любой можно вернуть за 7 дней.
443порт HTTPS в listen
2директивы: сертификат и ключ
1.2 и 1.3версии TLS по умолчанию
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#
- Проверьте синтаксис. Команда
sudo nginx -tчитает конфиг и сообщает об ошибке до того, как сайт упадёт. - Перечитайте конфиг.
sudo systemctl reload nginxприменит изменения без разрыва текущих соединений. - Откройте сайт по https. В адресной строке должен появиться замок, а срок и издателя можно посмотреть в свойствах сертификата.
- Проверьте цепочку из консоли. Команда ниже покажет, какие сертификаты отдаёт сервер.
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.
Почему этому можно верить
Как мы проверяли
Источники цифр на этой странице: 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.
Подключите SSL к сайту
От бесплатного Let's Encrypt до платных сертификатов GlobalSign с гарантийной выплатой и установкой под ключ. Любой можно вернуть за 7 дней.
- Бесплатный Let's Encrypt на домен
- Платные от 1 000 ₽ за 6 месяцев
- Wildcard на все поддомены
- 7 дней на возврат