HOWTO: SSL и NGINX

В данной заметке я расскажу как быстро привязать ssl сертификат к nginx. Испытания мы проведем тестовом сервере с тестовым сертификатом, который запросим у Comodo.

Итак, для начала определимся что у нас есть. А есть у нас один nginx сервер который смотрит в Интернет. И, для простоты, один внутренний (с ip 10.10.10.10) для которого и будет создаваться стандартное и ssl подключение. Конечно, серверов может быть сколько угодно. Но мы с вами сейчас не будем усложнять.

Для начала нам необходимо создать CSR-запрос на сертификат. Бесплатно можно его сделать либо напрямую у Comodo, либо через сайт http://www.freessl.su/. Мы будет делать через http://www.freessl.su/.

Конфигурационные файлы от nginx у меня лежат в каталоге /etc/nginx. Создаем там подкаталог ssl и переходим в него.

Далее необходимо создать CSR запрос. Для этого сначала создадим файл приватного ключа следующей командой:

Если вы хотите создать файл ключа без пароля, то введите следующую команду

Далее создадим файл запроса на генерацию сертификата. Для этого пишем команду и заполняем необходимые поля:

После этого будет сгенерирован файл /etc/nginx/ssl/secure.website.ru.csr. Скопируем его содержимое и идем на сайт www.freessl.su. Там заполняем поля ФИО, Телефон, email и вставляем содержимое файла secure.website.ru.csr в поле CSR. Нажимаем далее, выбираем подходящий контактный email. После этого на почтовый ящик придет письмо с просьбой подтвердить создание ssl сертификата. В письме будет указан код подтверждения. Перейдите по ссылке в письме и введите код.

Через некоторое время вам придет архив с сертификатом и файлом с промежуточными сертификатами. Скопируйте содержимое secure_website_ru.ca-bundle в /etc/nginx/ssl/secure.website.ru.crt.

На этом формирование сертификата закончено.

Переходим к настройке nginx. Для нашего случая конфигурация /etc/nginx/nginx.conf будет выглядеть следующим образом:

В такой конфигурации браузер получит сертификат первого сервера, т.е. www.example.com, независимо от запрашиваемого имени сервера. Это связано с поведением протокола SSL. SSL-соединение устанавливается до того, как браузер посылает HTTP-запрос, и nginx не знает имени запрашиваемого сервера. Следовательно, он лишь может предложить сертификат сервера по умолчанию. Решение данного вопроса вы можете найти по ссылке.

На этом базовая настройка nginx законена.

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *