08.08.2022

Сертификаты SSL. Устанавливаем на Nginx

Первым делом необходимо сгенерировать SCR-запрос через панель управления Serverspace. После этого запроса, а также после выбора необходимого сертификата, следующим логическим шагом будет установка сертификатов .CRT и .CA. Давайте подробнее остановимся на том, как устанавливать эти сертификаты на серверы Nginx и Unix-системы Ubuntu, CentOS или Debian.

Итак, после выполнения вышеперечисленных действий в разделе SSL, расположенном в панели управления Serverspace, находятся два файла .CA и .CRT.

Загрузка SSL на сервер

Файлы .CA и .CRT необходимо отправить на сервер. Часто Linux-серверы администрируют через терминал и GUI может отсутствовать. В этом случае можно отправить файлы на машину с другой ОС, а затем их перенести. Ниже мы расскажем, как это можно осуществить.

Важно: пара (закрытый и открытый ключи) должна быть сгенерирована там, куда устанавливаются сами сертификаты. Однако если они были созданы на другом компьютере, на ваш сервер следует отправить закрытый ключ (файл .key), в соответствии с описанными ниже действиями по копированию.

Перенос из Unix-систем

В данном случае самым простым вариантом будет воспользоваться встроенной опцией терминала – SCP:

1. Файлы .CA и .CRT скачиваются из панели Serverspace на ваш компьютер.
2. Открываем терминал и переходим в место скачивания сертификатов, например:

cd ~/MyDownloadedFiles

Загружаем все выданные сертификаты на веб-сервер:

scp yourtest.com_crt.crt yourtest.com_ca.crt login@121.122.222.111:/etc/ssl

Детальнее:

scp — копирует файлы;
yourtest.com_crt.crt — пример названия скачанного из панели Serverspace сертификата вашего ресурса;
yourtest.com_ca.crt — пример названия скачанного из панели Serverspace сертификата ЦА;
login — пользователь, который подключается через SSH (иногда им становится root);
121.122.222.111 – IP-адрес;
/etc/ssl – папка, в которую вы хотите отправить сохраняемые файлы.

Загрузка через операционную систему Windows

Первый шаг – устанавливаем клиент WinSCP. Скачать его можно по ссылке.

Запускаем. Откроется окно, куда необходимо ввести параметры подключения по протоколу SSH.

Слева вы увидите папки и файлы локальной машины, справа — файлы рабочего сервера, к которому подключились. Следует выбрать (либо создать, если такового нет) место, куда отправятся сертификаты. Используя функцию drag-n-drop, зажав левую клавишу мышки, переносите файлы .CA и .CRT.

Важно: удобнее будет сохранить .key в том же месте, где уже лежат файлы сертификатов. Это необязательно, но тогда вам придется запоминать расположение этого файла и указывать этот путь при конфигурации Apache, а не путь с нашего примера.

Чтобы сделать копию .key и отправить в иную директорию, в случае генерации закрытого ключа на сервере, можно воспользоваться командой:

cp /home/root/private.key /etc/ssl/private.key

При этом:

cp — отвечает за копирование;
/home/root/ — путь к файлу, если вы зашли «под рутом»;
private.key — имя файла самого ключа;
/etc/ssl/private.key — путь, куда мы хотим скопировать ключ.

Можно воспользоваться командой и удалить ключ в старой директории:

rm /home/root/private.key

Конфигурация Nginx для SSL

Когда вы сделали копии всех необходимых сертификатов, нужно сконфигурировать Nginx. Чтобы это сделать, заходим через SSH под root-ом и делаем следующее:

1. .CA (файл центра сертификации), а также .CRT (файл сайта) преобразовываем в один:

cat /etc/ssl/testdomain.com_crt.crt /etc/ssl/testdomain.com_ca.crt >> testdomain.crt

2. Открываем файл с настройками ресурса, для которого необходим сертификат SSL. Ниже пример, когда параметры находятся по адресу /etc/nginx/sites-enabled/files:

nano /etc/nginx/sites-enabled/files

Обратите внимание: на Ubuntu/Debian-дистрибутивах параметры веб-ресурсов Nginx обычно размещаются в директории /etc/nginx/sites-enabled/. В дистрибутиве CentOS стандартной директорией считается /etc/nginx/conf.d/. В системах Unix-семейства хорошо работает поиск через команду ls /папка/настройки (например, ls /etc/nginx/sites-enabled), которая откроет полный перечень файлов в каталоге.

Далее, используя утилиту nano, открываем выбранный файл (например, nano /etc/nginx/websites-enabled/file). Узнать, тот ли файл мы нашли, можно внутри server_name. Значение этой строки необходимо заменить на домен, куда устанавливается сертификат (например, website.com).

Важно для дистрибутива CentOS: в случае отсутствия редактора nano, можно установить его следующим образом:

yum install nano

Добавьте параметры из примера к вашей конфигурации:

listen 443 ssl;
ssl_certificate /etc/ssl/testdomain.crt;
ssl_certificate_key /etc/ssl/test.key;

Не забудьте поменять на ваши:
/etc/ssl/test.crt — прописать расположение ваших сертификатов;
/etc/ssl/test.key — прописать расположение закрытого ключа.

Сделаем рестарт:

Рестарт на Debian и Ubuntu:

/etc/init.d/nginx restart

Рестарт на CentOS:

service nginx restart

Допустим, у вас есть настроенный iptables firewall. В этом случае следует открыть 443 порт. Просто обратитесь к документации той системы, которую используете. Различные дистрибутивы Linux могут работать с iptables по-своему. Вот пара примеров:

Для CentOS пишем:

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Ubuntu 16.04 более лаконичен:

ufw allow 443/tcp

В Debian пишем следующее:

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

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

После всех проведенных манипуляций на вашем Apache имеются готовые сертификаты SSL. Дабы удостовериться в правильности всех конфигураций, откройте ваш ресурс через любой браузер, добавив к адресу сайта (например, http://yourwebsite.com) букву s, чтобы получилось так: https://yourwebsite.com. Если вы сделали всё правильно, возле URL-адреса сайта будет отображен «замок». Если вы нажмете на замок, то получите информацию об SSL-сертификате.

Подборки SSL-сертификатов: DV сертификат для домена, EV сертификат "зеленая строка", WC сертификат для поддоменов, SAN мультидоменный сертификат.