В статье мы рассмотрим, как установить SSL-сертификат на веб-сервер Nginx.
Перед установкой SSL убедитесь, что вы его заказали. Затем перейдите в личный кабинет, кликните по строке нужного SSL-сертификата и убедитесь, что у услуги статус «Активна»:
Если услуга неактивна, используйте инструкцию в зависимости от типа сертификата: Как активировать сертификаты: AlphaSSL и DomainSSL или Как активировать сертификаты: OrganizationSSL и ExtendedSSL.
Как установить SSL-сертификат на Nginx
После активации сертификата вам будут доступны необходимые данные для его установки, подробнее в статье Где взять данные для установки SSL-сертификата.
Также вы можете использовать для установки сертификат, купленный в сторонней компании.
Рассмотрим, как выполняется установка и настройка Nginx SSL:
-
1
Объедините три сертификата (ваш SSL-сертификат, промежуточный и корневой сертификаты) в один файл. Для этого создайте на ПК новый текстовый документ с именем your_domain.crt (your_domain — доменное имя сайта, который вы хотите защитить). Создать его можно при помощи блокнота или другого текстового редактора. Поочередно скопируйте и вставьте в созданный документ каждый сертификат. После вставки всех сертификатов файл должен иметь вид:
-----BEGIN CERTIFICATE----- #Ваш сертификат# -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- #Промежуточный сертификат# -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- #Корневой сертификат# -----END CERTIFICATE-----
Обратите внимание: один сертификат идёт следом за другим, без пустых строк.
- 2 Создайте файл your_domain.key и скопируйте в него содержание приватного ключа сертификата.
- 3 Загрузите созданные файлы your_domain.crt и your_domain.key на сервер в директорию /etc/ssl/. Директория может быть иной, например /etc/nginx/ssl/your_domain.com.
-
4
Откройте конфигурационный файл Nginx и отредактируйте виртуальный хост вашего сайта, который вы хотите защитить сертификатом. Выполните минимальную для работы настройку, добавив в файл следующие строки:
server { listen 443 ssl; server_name your_domain.com; ssl_certificate /etc/ssl/your_domain.crt; ssl_certificate_key /etc/ssl/your_domain.key; }
Где:
your_domain.com — домен сайта,
/etc/ssl/your_domain.crt — путь до созданного файла с тремя сертификатами,
/etc/ssl/your_domain.key — путь до файла с приватным ключом.
Минимальная установка и настройка выполнена. Далее вы можете добавить расширенные настройки конфигурационного файла либо сразу перейти к шагу 12.
-
5
Если вы хотите, чтобы сайт работал не только по защищённому соединению (https://), но и по незащищенному (http://), то нужно создать единый HTTP/HTTPS сервер. Для этого в конфигурационном файле Nginx необходимо иметь две секции server{} для каждого типа соединения.
Добавьте в секцию server{}, которую вы создали на шаге 4, следующую строку:
listen 80;
-
6
Также вы можете дополнительно оптимизировать работу Nginx HTTPS-сервера. SSL-операции задействуют дополнительные ресурсы сервера. Чтобы снизить количество операций, можно повторно использовать параметры SSL-сессий. Они хранятся в кеше SSL-сессий. Можно задать тип кеша (в примере это shared-кеш, разделяемый между всеми рабочими процессами) и его размер в байтах (в 1 Мб кеша помещается около 4000 сессий) с помощью директивы ssl_session_cache. Также можно увеличить таймаут кеша (время, в течение которого клиент повторно использует параметры сессии) директивой ssl_session_timeout: по умолчанию он равен 5 минутам. Можно настроить время работы одного keepalive-соединения с помощью директивы keepalive_timeout.
Добавьте в конфигурационном файле в секции server{} строки:
ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; keepalive_timeout 70;
-
7
Вы можете указать протоколы SSL, которые поддерживает сервер:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-
8
Чтобы при использовании протоколов SSLv3 и TLS серверные шифры были более приоритетны, чем клиентские, добавьте следующую строку:
ssl_prefer_server_ciphers on;
-
9
Чтобы уменьшить время загрузки страниц у пользователей сайта, нужно разрешить серверу прикреплять OCSP-ответы для валидации сертификата. При этом необходимо указать путь к файлу корневого сертификата и DNS-сервер. Создайте файл ca.crt и скопируйте в него содержимое корневого сертификата. Загрузите этот файл на сервер в директорию, где хранятся ранее созданные файлы. В нашем примере это /etc/ssl/.
Затем добавьте в конфигурационном файле в секции server{} строки:
ssl_stapling on; ssl_trusted_certificate /etc/ssl/ca.crt; resolver 8.8.8.8;
Где:
/etc/ssl/ca.crt — путь до файла с корневым сертификатом,
8.8.8.8 — DNS-сервер.
- 10 Сохраните и закройте конфигурационный файл Nginx.
-
11
Если вы не остановились на шаге 4, то секция server{} в конфигурационном файле с расширенными настройками будет выглядеть так:
server { listen 443 ssl; listen 80; server_name your_domain.com; ssl_certificate /etc/ssl/your_domain.crt; ssl_certificate_key /etc/ssl/your_domain.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; keepalive_timeout 70; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_trusted_certificate /etc/ssl/ca.crt; resolver 8.8.8.8; }
-
12
Чтобы изменения вступили в силу, перезагрузите сервер Nginx:
sudo /etc/init.d/nginx restart
Готово, вы установили SSL-сертификат на Nginx.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊