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

Серия Без названия

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

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

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

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

-----BEGIN CERTIFICATE-----

#Ваш сертификат#

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

#Промежуточный сертификат#

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

#Корневой сертификат#

-----END CERTIFICATE-----

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

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

Загрузите созданные файлы your_domain.crt и your_domain.key на сервер в директорию /etc/ssl/. Директория может быть иной, например /etc/nginx/ssl/your_domain.com.

Откройте конфигурационный файл 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.

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

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

listen 80;

Также вы можете дополнительно оптимизировать работу 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;

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

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

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

ssl_prefer_server_ciphers on;

Чтобы уменьшить время загрузки страниц у пользователей сайта, нужно разрешить серверу прикреплять 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-сервер.

Сохраните и закройте конфигурационный файл Nginx.

Если вы не остановились на шаге 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;

}

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

sudo /etc/init.d/nginx restart

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

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества