Меню

настройка https в nginx на ubuntu

Предложение от 8host.com

Создание SSL-сертификата на Nginx в Ubuntu 14.04

TLS (или Transport Layer Security, безопасность транспортного уровня) и его предшественник SSL (Secure Socket Layers, уровень защищённых сокетов) – это криптографические протоколы, которые используются для защиты передачи данных в Интернете.

Эта технология позволяет защитить обмен данными между сервером и клиентом и предотвратить перехват или несанкционированный доступ к информации. Кроме того, эти протоколы предоставляют систему сертификатов, которая помогает пользователям проверить подлинность сайтов, на которые они заходят.

Данное руководство продемонстрирует, как создать самоподписанный SSL-сертификат для веб-сервера Nginx на Ubuntu 14.04. Имейте в виду: самостоятельно подписанный сертификат не сможет подтвердить подлинности сервера, так как он не подписан проверенным центром сертификации (ЦС); тем не менее, такой сертификат позволит шифровать взаимодействие с веб-клиентами.

Требования

Чтобы следовать данному руководству, нужно создать нового пользователя с расширенными привилегиями sudo (root использовать не рекомендуется). Всю необходимую информацию по этому вопросу можно найти в статье «Начальная настройка сервера Ubuntu 14.04».

Кроме того, нужно предварительно установить Nginx. Чтобы установить всю группу программ LEMP (Linux, Nginx, MySQL, PHP), читайте руководство «Установка LEMP stack на Ubuntu 14.04»

Чтобы установить только Nginx, введите:

sudo apt-get update
sudo apt-get install nginx

1: Создание SSL-сертификата

Для начала нужно создать каталог для хранения информации SSL в конфигурационном каталоге Nginx:

Теперь на сервере есть отдельное место для хранения файлов SSL; создайте ключ и сертификат при помощи следующих команд:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

При этом появится ряд вопросов. Но прежде чем продолжить, нужно разобрать вышеприведенные команды:

  • openssl: базовый инструмент командной строки для создания и управления сертификатами, ключами и другими файлами OpenSSL.
  • req: эта подкоманда указывает, что на данном этапе нужно использовать запрос на подпись сертификата X.509 (CSR). X.509 – это стандарт инфраструктуры открытого ключа, которого придерживаются SSL и TLS при управлении ключами и сертификатами. То есть, данная команда позволяет создать новый сертификат X.509.
  • x509: данная опция вносит поправку в предыдущую субкоманду, сообщая утилите о том, что вместо запроса на подписание сертификата необходимо создать самоподписанный сертификат.
  • nodes: говорит OpenSSL пропустить опцию защиты сертификата парольной фразой. Нужно, чтобы при запуске сервер Nginx имел возможность читать файл без вмешательства пользователя. Установив пароль, придется вводить его после каждой перезагрузки.
  • days 365: эта опция устанавливает срок действия сертификата (как видите, в данном случае сертификат действителен в течение года).
  • newkeyrsa:2048: эта опция позволяет одновременно создать новый сертификат и новый ключ. Поскольку ключ, необходимый для подписания сертификата, не был создан ранее, нужно создать его вместе с сертификатом. Данная опция создаст ключ RSA на 2048 бит.
  • keyout: эта опция сообщает OpenSSL, куда поместить сгенерированный файл ключа.
  • out: сообщает OpenSSL, куда поместить созданный сертификат.

Как уже было сказано, все эти опции сгенерируют и ключ, и сертификат. Но сначала нужно будет заполнить появившиеся поля информацией о сервере, которая должна отображаться в сертификате.

Читайте также:  настройка часов tissot navigator 3000

Итак, заполните эти поля соответствующими данными. Самой важной строкой является Common Name (введите полное доменное имя сервера (FQDN) или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера. В целом эти поля выглядят примерно так:

Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: New York
Locality Name (eg, city) []: New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Bouncy Castles, Inc .
Organizational Unit Name (eg, section) []: Ministry of Water Slides
Common Name (e.g. server FQDN or YOUR name) []: your_domain.com
Email Address []: admin@your_domain.com

Файлы ключа и сертификата будут помещены в каталог /etc/nginx/ssl.

2: Настройка Nginx для поддержки SSL

Итак, на данном этапе ключ и сертификат уже созданы и хранятся в конфигурационном каталоге Nginx. Теперь нужно просто отредактировать настройки (а точнее, файл блока server) Nginx.

Веб-серверы Nginx версии 0.7.14 и выше (Ubuntu 14.04 поставляется с 1.4.6) позволяют активировать SSL в том же блоке server, что и обычный HTTP-трафик.

Блок server имеет примерно такой вид:

server <
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name your_domain.com;
location / <
try_files $uri $uri/ =404;
>
>

Чтобы включить SSL с помощью такого блока server (и при этом оставить обычные HTTP-соединения), нужно просто внести в него следующие строки:

server <
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
listen 443 ssl ;
root /usr/share/nginx/html;
index index.html index.htm;
server_name your_domain.com ;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / <
try_files $uri $uri/ =404;
>
>

Внеся все необходимые изменения, сохраните и закройте файл.

Теперь нужно перезапустить Nginx, чтобы веб-сервер начал использовать новые настройки:

sudo service nginx restart

После этого сервер сможет отвечать на запросы HTTP и HTTPS (SSL).

3: Тестирование настроек

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

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

Браузер должен открыть соответствующий сайт. Если так и случилось, значит, сервер по-прежнему обрабатывает запросы HTTP.

Теперь нужно проверить, может ли сервер работать через SSL. Для этого используйте предыдущий формат, заменив протокол http протоколом https:

Скорее всего, веб-браузер отобразит предупреждение «The site’s security is not trusted». Так браузер сообщает, что он не может проверить подлинность сервера, к которому нужно подключиться, поскольку сайт не заверен центром сертификации, которому браузер может доверять. Поскольку созданный ранее сертификат является самоподписанным, это ожидаемая реакция.

Чтобы продолжить, нажмите кнопки Proceed anyway, Continue (или подобную доступную кнопку). После этого браузер откроет нужный сайт.

В адресной строке браузера могут быть зачеркнуты часть «https» или значок «lock» (знак замка). Если щелкнуть по значку замка, можно получить более подробную информацию о подключении.

Как видите, на данном этапе проблема состоит только в том, что браузер не может проверить подлинность сервера, потому что он не был подписан надежным с точки зрения браузера центром сертификации. Тем не менее, самоподписанный сертификат шифрует соединение, что и было целью данного руководства.

Читайте также:  настройка steamvr для oculus rift

Итоги

Теперь сервер Nginx может обрабатывать запросы HTTP и SSL, что защитит взаимодействие сервера с клиентами и предотвратит перехват трафика неавторизованными пользователями.

Конечно, при разработке общественного сайта рекомендуется подписать SSL-сертификат в надежном центре сертификации, что позволит избежать появления отпугивающих предупреждений.

источник

Установка веб-сервера Nginx на Ubuntu Server 18.04

В этой статье мы пошагово рассмотрим установку веб-сервера Nginx на Ubuntu Server 18.04. Научимся управлять его процессами. Настроим файрвол UFW для Nginx, проверим работу веб-сервера, разберемся с основными директориями, логами и посмотрим часто используемые команды.

Шаг 1. — Подготовка

На этапе подготовки мы убеждаемся что у нас есть всё необходимое для выполнения дальнейшей инструкции:

  • Нам нужна установленная ОС Ubuntu Server 18.04 — Вам в помощь статья — Установка Ubuntu Server 18.04 LTS
  • Ubuntu Server 18.04 должна иметь статический IP-адрес и доступ в интернет — Настройка сети в Ubuntu Server 18.04 [Netplan]
  • Необязательно, но желательно включить фаервол UFW — Первоначальная настройка Ubuntu Server 18.04

Посмотрим свой IP-адрес, командой ifconfig.(Рис.1)

Рис.1 — Командой ifconfig узнаём IP-адрес нашего сервера.

Адрес моего сервера — 192.168.3.9, в этой статье я буду вводить его в браузере на другом ПК, для проверки работоспособности Nginx. Вы должны будете ввести свой IP-адрес.

Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере -«localhost» или IP-адрес — 127.0.0.1

Всё! На этом подготовка завершена.

Шаг 2. — Установка Nginx

Первым делом обновляем список пакетов репозитория.

Nginx доступен в стандартном репозитории. Приступаем к установке.(Рис.2)

Рис.2 — Устанавливаем веб-сервер Nginx на Ubuntu 18.04.

После установки сразу же посмотрим статус веб-сервера.(Рис.3)

Рис.3 — Смотрим статус веб-сервера Nginx.

Как видим Nginx после установки сразу же сам запустился. [Об этом свидетельствует строчка — «Active: active (running) « , также отсутствуют серьёзные ошибки.]

Nginx добавлен в автозагрузку. [Это мы понимаем по слову «enabled;» В строке «Loaded: loaded (/lib/systemd/system/nginx.service; enabled; «.]

Посмотреть версию установленного Nginx можно с помощью команды nginx -v.(Рис.4)

Точная версия: nginx/1.14.0.

Рис. 4 — Смотрим версию веб-сервера Nginx.

Если у вас Nginx не запустился, запустите его командой:

Добавить Nginx в автозагрузку, можно командой:

Если вдруг он вам не нужен в автозагрузке, то удалить Nginx из автозагрузки можно командой:

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

Шаг 3. — Настройка файрвола UFW

Для тех кто файрвол не включил и не собирается включать — Переходите к Шаг 4. — Проверка Nginx

Напомню! файрвол UFW мы включили в этой статье — Первоначальная настройка Ubuntu Server 18.04

Посмотрим профили приложений в файрволе UFW.(Рис.5)

Рис.5 — Просматриваем профили приложений UFW.

Видим три профиля Nginx:

  • Nginx Full — открывает два порта 80http [ нешифрованный веб-трафик ] и 443https [ TLS / SSL — зашифрованный веб-трафик ]
  • Nginx HTTP — открывает стандартный 80 порт — http[ нешифрованный веб-трафик ]
  • Nginx HTTPS — открывает только 443 порт — https [TLS / SSL — зашифрованный веб-трафик ]
Читайте также:  настройки viber на samsung

Для того чтобы применить какой-либо профиль можно воспользоваться командой — sudo ufw allowИмя_профиля

Мы применим первый профиль — Nginx HTTP.(Рис.6)

Рис.6 — Применяем профиль Nginx в файволе UFW.

Правило применилось!

Шаг 4. — Проверка Nginx

На этапе Шаг 1. — Подготовка мы выяснили IP-адрес сервера, Я с другого компьютера, который находится в той же локальной сети, что и сервер, ввожу его в браузере.(Рис.7)

Для тех кто в танке. Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере — localhost или IP-адрес — 127.0.0.1 © Шаг 1. — Подготовка

Если вы тоже увидели страницу «Welcome to nginx!«, значит вы всё сделали правильно! Веб-сервер работает!

Рис.7 — Вводим IP-адрес сервера в браузере. Страница «Welcome to nginx!».

Каталоги и файлы конфигураций Nginx

/etc/nginx/ — Главный каталог веб-сервера Nginx.

  • /etc/nginx/nginx.confГлавный конфигурационный файл Nginx.

/var/www/ — Каталог хранит папки сайтов.

Изначально в нём содержится папка html, в которой лежит файл index.html [index.html — стартовая страница Nginx — «Welcome to nginx!«, которую мы увидели на Шаг 4. — Проверка Nginx]

Для примера покажем, как может выглядеть содержимое каталога «/var/www/» у более опытных пользователей:

  • /var/www/
    • /html
      • index.html
    • /itdeer.ru
      • /files
      • /img
      • index.html
    • /yandex.ru
      • /search.yandex.ru
        • index.html
      • /photo.yandex.ru
        • index.html
  • /etc/nginx/sites-available/ — В директории хранятся файлы доступных виртуальных хостов.[Изначально в ней хранится файл «default» — Виртуальный хост по умолчанию.]
  • /etc/nginx/sites-enabled/ — В директории хранятся активированныевиртуальные хосты.

Nginx не использует файлы виртуальных хостов[sites-available], если они не активированы в директории «sites-enabled«. Активация происходит путем создания символической ссылки в каталоге «sites-enabled«, при помощи команды [пример для виртуального хоста с именем «itdeer.ru«]:

Логи веб-сервера Nginx

Логи веб-сервера Nginx хранятся в каталоге /var/log/nginx/.(Рис.8)

Рис.8 — Просмотр папки с логами /var/log/nginx/.

Приведены команды для чтения логов с помощью «tail«, «tail -10» — выводит последние 10 строк лога, можете подобрать цифру удобную вам.

/var/log/nginx/access.log — журнал всех запросов к серверу Nginx.

/var/log/nginx/error.log — журнал всех ошибок Nginx.

Часто используемые команды

Запустить Nginx:

Остановить Nginx:

Статус Nginx:

Добавить Nginx в автозагрузку:

Удалить Nginx из автозагрузки:

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

Проверка конфигурации Nginx на ошибки [В ответ вы получите «сообщение об ошибке» или «nginx: the configuration file /etc/nginx/nginx.conf syntax is ok и nginx: configuration file /etc/nginx/nginx.conf test is successful» — отсутствие ошибок и синтаксисе файла /etc/nginx/nginx.conf и успешное выполнение конфигурации /etc/nginx/nginx.conf]:

Версия Nginx:

источник