Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

Установка SSL-сертификата на Nginx

Рассмотрим, как установить SSL-сертификат от Let's Encrypt для веб-сервера Nginx на операционных системах Ubuntu и CentOS.

Выпуск и установка Let's Encrypt

Установка Certbot

Для выпуска сертификата воспользуемся утилитой Certbot. 

Установим Certbot и плагин для Nginx:

    

Теперь Certbot готов к использованию для выпуска и настройки SSL-сертификата.

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

Certbot настроит сертификат для виртуального хоста, ориентируясь на домен, указанный в директиве server_name. Убедитесь, что в конфигурации Nginx указан правильный домен вашего сайта.

Для этого откройте файл конфигурации:

    

Проверьте, что в директиве server_name указан правильный домен. Если нужно внести изменения, сделайте это, а затем сохраните файл.

После этого, проверьте конфигурацию Nginx на наличие ошибок:

    

Если вы вносили изменения в конфигурацию, перезапустите веб-сервер:

    

Получение SSL

Запустите Certbot с плагином Nginx, чтобы получить и настроить SSL-сертификат:

    

Где example.com и www.example.com — это домены, которые должны быть указаны в конфигурации Nginx.

При первом запуске Certbot запросит ваш контактный email, а также предложит принять условия лицензионного соглашения.

После успешного завершения процедуры, Certbot покажет путь к сохранённым сертификатам:

    

Автоматическое обновление SSL-сертификатов

Сертификаты Let's Encrypt действуют 90 дней, поэтому их необходимо своевременно обновлять. Это можно сделать вручную с помощью команды:

    

Однако рекомендуется настроить автоматическое обновление с помощью cron-задачи. Откройте редактор cron:

    

Добавьте следующую строку:

    

Эта задача настроит автоматическое обновление сертификатов каждый вторник в 03:30 утра. Certbot будет проверять срок действия сертификатов и, если до их истечения останется менее 30 дней, выполнит автоматическое обновление. После успешного обновления Nginx будет перезагружен, чтобы начать использовать новый сертификат. Все действия Certbot будут записываться в файл renew-ssl.log.

Установка существующего сертификата

Если у вас уже приобретен SSL-сертификат, установить его можно по инструкции ниже.

Загрузка файлов сертификата на сервер

  1. Как правило, после покупки сертификата у вас будут следующие файлы: сам сертификат (.crt) и цепочка сертификатов (.ca-bundle), которая содержит промежуточный и корневой сертификат. 

Вам нужно скопировать их содержимое в единый файл ваш_домен.crt, друг под другом, без пробелов. Файл ваш_домен.crt можно создать с помощью Блокнота или любого другого текстового редактора.

У вас получится следующее:

    

Если вы покупали SSL в Timeweb Cloud, у вас будет один файл CRT, который уже содержит все необходимые данные. Просто полностью скопируйте его содержимое — это можно сделать в разделе «SSL-сертификаты».

Cc46ef08 C38e 4cab B644 28d04b7982a1

Если вы покупали SSL у другого провайдера и у вас нет файла цепочки, запросить ее можно через поддержку провайдера или сгенерировать с помощью сервиса https://whatsmychaincert.com/.

  1. Также после покупки SSL у вас будет файл приватного (секретного) ключа.

В Timeweb Cloud файл Private KEY можно найти в разделе «SSL-сертификаты». Если вы покупали SSL через другого провайдера и у вас нет этого файла, запросите его через поддержку провайдера.

Создайте новый файл с именем ваш_домен.key и скопируйте в него содержимое приватного ключа.

  1. Подключитесь к серверу по FTP / SFTP и загрузите файлы в директорию /etc/ssl.

Другой вариант — подключиться по SSH и создать нужные файлы в директории /etc/ssl, например:

    

В созданный файл вставьте содержимое сертификата и цепочки. Сохраните изменения (Ctrl+X, затем Y и Enter).

Создайте файл ключа:

    

Вставьте в него содержимое файла ключа и сохраните изменения.

Настройка конфигурационного файла Nginx

В зависимости от ваших настроек, потребуется изменить либо основной конфиг-файл Nginx (/etc/nginx/nginx.conf), либо конфиг виртуального хоста, если вы его создавали.

Для Ubuntu файл конфигурации виртуального хоста находится по пути /etc/nginx/sites-available/ваш_домен.conf. Для CentOS конфигурационный файл виртуального хоста располагается в директории /etc/nginx/conf.d/ваш_домен.conf.

Откройте его:

    

В блок server{} добавьте следующие данные:

Вместо:

    

Укажите:

    

Под строкой:

    

Укажите пути к файлам сертификата и ключа: 

    

Чтобы перенаправлять клиентов, обратившихся к сайту по HTTP, на безопасное подключение, добавьте новый блок server{} под существующим со следующим содержимым:

    

Здесь мы указываем временный 302 редирект. После того, как вы проверите работу и убедитесь, что все в порядке, замените его на 301.

В итоге у вас должно получиться что-то подобное:

    

Этих настроек достаточно для работы сертификата. Вы можете сохранить изменения и сразу перейти к шагу 4. Либо можно настроить дополнительные параметры — их рассмотрим на следующем шаге.

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

  1. Чтобы оптимизировать работу Nginx при использовании SSL, можно задействовать кэш SSL-сессий. 
    • Укажем, что будем использовать shared-кэш, который делится между всеми рабочими процессами, и его размер — 10 МБ:
    

Эту и следующие строки также вставьте в блок server{} — под строки с путями до сертификатов.

    • Зададим таймаут кэша в 10 минут:
    

Таймаут — это период, в течение которого параметры SSL-сессии используются повторно. По умолчанию таймаут равен 5 минутам, если вам подходит это значение, директиву ssl_session_timeout можно не указывать. А можно, напротив, значительно увеличить таймаут, чтобы повысить производительность веб-сервера — например, до одного дня (1d).

    • Зададим время работы одного соединения:
    
  1. Чтобы ускорить загрузку страниц сайта у его посетителей, можно включить опцию SSL stapling — это разрешит серверу прикреплять OCSP-ответы для валидации сертификата. 

Для этого вам понадобится создать файл ca.crt, который будет содержать корневой сертификат, полученный вами при покупке SSL (в файле цепочки он идет последним).

Созданный файл нужно разместить на сервере в директории с сертификатами /etc/ssl.

Включаем SSL stapling, добавляя директиву:

    

Указываем путь к корневому сертификату:

    

Указываем DNS:

    

Сохраните изменения.

В итоге вас получится конфигурация примерно следующего вида:

    

Применение настроек

Проверьте конфигурацию Nginx:

    

Перезапустите Nginx, чтобы изменения вступили в силу:

    

Проверьте работу сайта — теперь он должен быть доступен по HTTPS.

Была ли статья полезна?
Ваша оценка очень важна