Содержание статьи

SSL сертификат обеспечивает шифрование данных между сервером и клиентом, повышая безопасность веб-сайта и улучшая доверие пользователей. На практике использование HTTPS также положительно влияет на SEO и предотвращает утечки данных при передаче форм и личной информации.
Для установки SSL на Nginx требуется подготовить сам сертификат и закрытый ключ. Сертификаты можно получить как от коммерческих центров сертификации, так и бесплатно через Let’s Encrypt. Важно убедиться, что версия Nginx поддерживает TLS 1.2 или выше для соответствия современным стандартам безопасности.
Настройка включает редактирование конфигурационных файлов Nginx, добавление путей к сертификату и ключу, настройку редиректов с HTTP на HTTPS и проверку корректности конфигурации с помощью встроенных инструментов. Ошибки в конфигурации могут привести к недоступности сайта, поэтому шаги следует выполнять последовательно.
В этом руководстве будут приведены конкретные команды и рекомендации, позволяющие быстро и безопасно подключить SSL сертификат, минимизируя риск ошибок и обеспечивая совместимость с основными браузерами и устройствами.
Проверка наличия и версии Nginx перед установкой сертификата

Для корректной установки SSL сертификата необходимо убедиться, что Nginx установлен на сервере и его версия совместима с современными протоколами TLS. Выполните команду:
nginx -v
Она выведет установленную версию, например: nginx version: nginx/1.22.1. Версия 1.18 и выше поддерживает актуальные стандарты безопасности, включая TLS 1.3.
Если Nginx не установлен, используйте пакетный менеджер вашей системы. Для Debian/Ubuntu:
sudo apt update && sudo apt install nginx
Для CentOS/RHEL:
sudo yum install nginx
После установки повторно проверьте версию. Убедитесь, что служба Nginx активна, выполнив:
systemctl status nginx
Если служба не запущена, активируйте её командой:
sudo systemctl start nginx
Только после подтверждения наличия и актуальности Nginx переходите к генерации и установке SSL сертификата.
Создание или получение SSL сертификата для домена

Для безопасного соединения необходимо иметь действующий SSL сертификат. Существует два основных варианта: получение сертификата от центра сертификации (CA) или самостоятельное создание самоподписанного сертификата.
Если выбирается бесплатный вариант, можно использовать Let’s Encrypt. Для этого требуется установить Certbot, который автоматизирует процесс создания и продления сертификатов. Команда для установки на Ubuntu: sudo apt install certbot python3-certbot-nginx. После установки запускается генерация сертификата командой: sudo certbot --nginx -d example.com -d www.example.com, где указываются все домены, для которых нужен сертификат.
Для коммерческих сертификатов необходимо выбрать CA, приобрести сертификат и получить файлы .crt и .key. После получения файлов их следует разместить на сервере в директории, доступной Nginx, например /etc/ssl/example.com/.
Для тестирования или внутренних проектов можно создать самоподписанный сертификат командой: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/example.com/example.key -out /etc/ssl/example.com/example.crt. Следует учитывать, что браузеры будут предупреждать о ненадежном соединении при использовании самоподписанных сертификатов.
После получения или создания сертификата важно проверить корректность файлов и прав доступа. Ключевой файл .key должен быть доступен только пользователю root, а сертификат .crt – для чтения Nginx.
Размещение сертификата и ключа на сервере

После получения SSL-сертификата необходимо корректно разместить файлы на сервере. Обычно используются два файла: сам сертификат (.crt или .pem) и приватный ключ (.key). Их нужно хранить в защищённой директории с ограниченным доступом, например:
| Файл | Рекомендуемое расположение | Права доступа |
|---|---|---|
| Сертификат (.crt) | /etc/ssl/certs/имя_домена.crt | 644 (чтение для всех, запись только для root) |
| Приватный ключ (.key) | /etc/ssl/private/имя_домена.key | 600 (доступ только root) |
Для переноса используйте команду scp или rsync с локальной машины на сервер:
scp mydomain.crt user@server:/etc/ssl/certs/
scp mydomain.key user@server:/etc/ssl/private/
После размещения проверьте права доступа:
sudo chmod 644 /etc/ssl/certs/имя_домена.crt
sudo chmod 600 /etc/ssl/private/имя_домена.key
Убедитесь, что Nginx имеет доступ только к чтению сертификата и ключа. Любое изменение пути в конфигурации Nginx должно соответствовать фактическому расположению файлов.
Настройка конфигурации Nginx для HTTPS
После получения SSL-сертификата необходимо внести изменения в конфигурацию Nginx для работы через HTTPS. Основной файл конфигурации обычно находится по пути /etc/nginx/sites-available/ваш_домен или /etc/nginx/conf.d/ваш_домен.conf.
Пример базовой конфигурации HTTPS:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
nginxssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Рекомендуется настроить редирект с HTTP на HTTPS для всех запросов. Это обеспечивается отдельным серверным блоком:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Для повышения безопасности можно добавить дополнительные директивы:
ssl_session_cache shared:SSL:10m;– кэширование SSL-сессий.ssl_session_timeout 10m;– время жизни сессии.ssl_stapling on;иssl_stapling_verify on;– OCSP stapling для ускорения проверки сертификата.- Ограничение протоколов и шифров, чтобы отключить устаревшие версии TLS и слабые шифры.
После внесения изменений необходимо проверить синтаксис конфигурации командой:
nginx -t
и перезапустить Nginx:
systemctl reload nginx
Эти шаги обеспечивают корректное подключение через HTTPS и соответствие базовым требованиям безопасности.
Перезапуск Nginx и проверка работы SSL

После внесения изменений в конфигурацию Nginx необходимо проверить её корректность. Выполните команду:
sudo nginx -t
Если тест пройден успешно, перезапустите сервер:
sudo systemctl restart nginx
Для проверки статуса используйте:
sudo systemctl status nginx
Убедитесь, что служба активна и ошибок нет.
Проверить работу SSL можно через браузер, набрав https://ваш_домен. Должен отображаться замок и корректные сведения о сертификате.
Дополнительно используйте команду OpenSSL для проверки цепочки сертификатов:
openssl s_client -connect ваш_домен:443 -servername ваш_домен
Обратите внимание на строки Verify return code: 0 (ok) и наличие всех промежуточных сертификатов. Это гарантирует правильное подключение и шифрование.
Для автоматической проверки можно использовать онлайн-инструменты типа SSL Labs, которые оценивают конфигурацию и совместимость с различными браузерами.
Тестирование безопасности и устранение ошибок сертификата
Для анализа уязвимостей и слабых шифров рекомендуется сервис Qualys SSL Labs. Он отображает оценки конфигурации, поддерживаемые протоколы и алгоритмы шифрования. Ошибки типа «self-signed certificate» или «certificate chain incomplete» указывают на неправильное размещение промежуточных сертификатов.
Типичные проблемы включают истекший сертификат, несовпадение домена и отсутствие промежуточного сертификата. Для их устранения убедитесь, что на сервере размещены файлы полного цепочного сертификата, и перезапустите Nginx командой sudo systemctl restart nginx. После перезапуска повторите проверку с openssl и онлайн-сервисами.
Дополнительно проверяйте перенаправления с HTTP на HTTPS и наличие HSTS-заголовков. Команда curl -Ik https://yourdomain.com позволяет убедиться в правильной передаче заголовков и отсутствии ошибок сертификата при соединении.
Вопрос-ответ:
Как проверить, поддерживает ли моя версия Nginx SSL?
Чтобы узнать, поддерживает ли установленная версия Nginx работу с SSL, выполните команду nginx -V. В выводе ищите наличие флага --with-http_ssl_module. Если этот модуль включен, Nginx сможет работать с HTTPS. В противном случае потребуется пересобрать Nginx с поддержкой SSL или установить версию, уже собранную с этим модулем.
Какие файлы сертификата и ключа нужно размещать на сервере?
На сервере требуется два файла: приватный ключ (.key) и сертификат домена (.crt или .pem). В некоторых случаях поставщик SSL также выдает промежуточный сертификат (ca-bundle), который рекомендуется объединить с основным сертификатом в один файл для корректного распознавания браузерами. Размещать файлы лучше в отдельной защищенной директории, например /etc/nginx/ssl/, с правами доступа, ограничивающими чтение только пользователем root.
Как правильно настроить конфигурацию Nginx для HTTPS?
В конфигурации сервера необходимо указать путь к файлам сертификата и ключа через директивы ssl_certificate и ssl_certificate_key. Также рекомендуется включить безопасные протоколы TLS и задать шифры, например: ssl_protocols TLSv1.2 TLSv1.3; и ssl_ciphers 'HIGH:!aNULL:!MD5';. После внесения изменений конфигурацию проверяют командой nginx -t, чтобы убедиться в отсутствии ошибок, и перезапускают Nginx.
Как проверить работу SSL после установки?
После перезапуска Nginx доступ к сайту по HTTPS можно проверить через браузер или утилиты командной строки. Например, с помощью curl -I https://ваш_домен вы увидите заголовки ответа сервера. Также можно использовать сервисы вроде SSL Labs, чтобы оценить корректность цепочки сертификатов, поддерживаемые протоколы TLS и шифры, а также обнаружить возможные ошибки конфигурации.
Что делать, если браузер сообщает о недействительном сертификате?
Основные причины недействительного сертификата — неправильная цепочка сертификатов, несоответствие имени домена или просроченный сертификат. Сначала убедитесь, что Nginx использует правильные файлы .crt и .key. Затем проверьте наличие промежуточных сертификатов и корректность их объединения с основным сертификатом. После исправления конфигурации перезапустите сервер и повторно протестируйте через браузер и внешние сервисы проверки SSL.
