Перейти к основному контенту

Как настроить SSL-сертификат на Nginx

В статье мы рассмотрим, как установить SSL-сертификат на веб-сервер Nginx.

Перед установкой SSL убедитесь, что вы его заказали. Затем перейдите в Личный кабинет, кликните по строке нужного SSL-сертификата и убедитесь, что у услуги статус «Активна»:

как установить сертификат на vps 1

Если услуга неактивна, используйте инструкцию в зависимости от типа сертификата: Как активировать сертификаты: AlphaSSL и DomainSSL или Как активировать сертификаты: OrganizationSSL и ExtendedSSL.


Сервис настройки NGINX

Не тратьте время на ручную подготовку конфигурационных файлов для NGINX. Выберите нужные параметры и скачайте уже сформированный конфигурационный файл.

Как установить SSL-сертификат на Nginx

После активации сертификата вам будут доступны необходимые данные для его установки, подробнее в статье Где взять данные для установки SSL-сертификата.

Также вы можете использовать для установки сертификат, купленный в сторонней компании.

Рассмотрим, как выполняется установка и настройка Nginx SSL:

  1. 1.

    Объедините три сертификата (сам SSL-сертификат, корневой и промежуточный сертификаты) в один файл. Для этого создайте на ПК новый текстовый документ с именем your_domain.crt (your_domain — доменное имя сайта, который вы хотите защитить). Создать его можно при помощи блокнота или другого текстового редактора. Поочередно скопируйте и вставьте в созданный документ каждый сертификат. После вставки всех сертификатов файл должен иметь вид:

    -----BEGIN CERTIFICATE-----
    #Ваш сертификат#
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    #Промежуточный сертификат#
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    #Корневой сертификат#
    -----END CERTIFICATE-----

    Обратите внимание: один сертификат идёт следом за другим, без пустых строк.

  2. 2.
    Создайте файл your_domain.key и скопируйте в него содержание приватного ключа сертификата.
  3. 3.
    Загрузите созданные файлы your_domain.crt и your_domain.key на сервер в директорию /etc/ssl/. Директория может быть иной, например /etc/nginx/ssl/your_domain.com.
  4. 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. 5.

    Если вы хотите, чтобы сайт работал не только по защищённому соединению (https://), но и по незащищенному (http://), то нужно создать единый HTTP/HTTPS сервер. Для этого в конфигурационном файле Nginx необходимо иметь две секции server{} для каждого типа соединения.

    Добавьте в секцию server{}, которую вы создали на шаге 4, следующую строку:

    listen 80;
  6. 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. 7.

    Вы можете указать протоколы SSL, которые поддерживает сервер:

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  8. 8.

    Чтобы при использовании протоколов SSLv3 и TLS серверные шифры были более приоритетны, чем клиентские, добавьте следующую строку:

    ssl_prefer_server_ciphers on;
  9. 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. 10.
    Сохраните и закройте конфигурационный файл Nginx.
  11. 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. 12.

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

    sudo /etc/init.d/nginx restart

Готово, вы установили SSL-сертификат на Nginx.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 6 из 8