- Что такое SSL-сертификат
- Как установить SSL-сертификат на сервер Nginx
- Как проверить работу SSL-сертификата
В этой статье мы расскажем о том, как установить SSL-сертификат на Nginx. Но сначала дадим понятие SSL-сертификата и объясним, как он устроен.
Что такое SSL-сертификат
SSL-сертификат — это цифровой документ, который хранит в себе информацию о домене и его владельце. Если вы переходите на ресурс и видите значок замка и https:// в адресной строке браузера, значит, на сайте используется SSL-сертификат.
Главное назначение сертификата безопасности — защитить данные от перехвата третьими лицами. Это возможно благодаря криптографическому протоколу TLS — «современнику» SSL-протокола (protocol SSL), в честь которого SSL-сертификат получил название. Он шифрует данные перед их передачей.
Помимо этого SSL-сертификаты используются, чтобы:
- сохранить целостность данных при передаче — при использовании SSL-сертификата они не потеряются и не изменятся,
- подтвердить подлинность ресурса — так как центр сертификации проводит проверку домена и его администратора на существование, SSL-сертификат выдается только проверенным сайтам.
После установки SSL-сертификата сайт начинает работу по протоколу HTTPS, который поддерживает шифрование информации и работает поверх криптографического TLS. В чем отличие TLS от HTTPS? TLS кодирует передаваемые данные, а HTTPS — канал, по которому они передаются.
SSL-сертификат необходим для сайта, на котором пользователи оставляют личные данные (например, номер телефона или email) или указывают данные банковских карт для оплаты.
Как установить SSL-сертификат на сервер Nginx
Перед установкой нужно получить все части SSL-сертификата:
- сертификат,
- приватный ключ,
- промежуточный сертификат,
- корневой сертификат.
Далее нужно выполнить несколько подготовительных действий на компьютере:
- Создайте файл с названием domain_name.crt (вместо domain_name укажите домен, для которого заказан сертификат). Добавьте в него сертификат, промежуточный и корневой сертификаты. Итоговая версия файла должна иметь следующий вид:
сертификат
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
промежуточный_сертификат
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
корневой_сертификат
-----END CERTIFICATE-----
- Создайте второй файл с названием domain_name.key (вместо domain_name укажите домен, для которого заказан сертификат). Добавьте в него содержимое приватного ключа.
- Создайте файл с названием ca.crt и добавьте в него содержимое корневого сертификата.
Готово.
Следующие шаги — это установка и настройка SSL-сертификата на Nginx.
Чтобы установить сертификат:
- Подключитесь к серверу по SSH.
- Загрузите созданные файлы на сервер. Это нужно сделать в следующую директорию:
Также возможен вариант:
Вместо domain.ru укажите директорию вашего домена.
- Откройте конфигурационный файл Nginx. Для этого выполните одну из команд в зависимости от расположения файла на сервере:
sudo nano /etc/nginx
sudo nano /usr/local/etc/nginx
- В файле конфигурации Nginx добавьте блок для работы сайта по HTTPS:
listen 443 ssl;
server_name domain.ru;
ssl_certificate /etc/ssl/domain_name.crt;
ssl_certificate_key /etc/ssl/domain_name.key;
}
Где:
- domain.ru — доменное имя сайта,
- domain_name.crt — путь к файлу с публичным ключом,
- domain_name.key — путь к файлу с приватным ключом.
- Если вам нужно, чтобы был доступен протокол HTTP, добавьте дополнительную директиву listen:
- Далее необходимо оптимизировать работу HTTPS-сервера Nginx: для этого в секции server добавьте строки:
ssl_session_timeout 10m;
keepalive_timeout 70;
Где:
- shared:SSL:10m — тип кэша и его размер,
- ssl_session_timeout 10m — таймаут кэша,
- keepalive_timeout 70 — время одного соединения.
- Укажите протоколы TLS (SSL), версии которых должен поддерживать сервер:
- Для выбора серверных шифров в качестве приоритетных добавьте строку:
- Чтобы страницы сайта загружались быстрее, нужно:
- позволить серверу прикреплять OCSP-ответы для проверки статуса SSL-сертификата,
- указать путь к корневому сертификату,
- добавить адрес корневого DNS-сервера.
Для настройки этих параметров добавьте строки:
ssl_trusted_certificate /etc/ssl/domain.ru/ca.crt;
resolver 1.1.1.1;
Где:
- /etc/ssl/domain.ru/ca.crt — путь к файлу корневого сертификата,
- 1.1.1.1 — адрес корневого DNS-сервера.
- Проверьте содержимое конфигурационного файла. Оно будет иметь следующий вид:
listen 443 ssl;
listen 80;
server_name domain.ru;
ssl_certificate /etc/ssl/domain.ru/domain_name.crt;
ssl_certificate_key /etc/ssl/domain.ru/domain_name.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/domain.ru/ca.crt;
resolver 1.1.1.1;
}
После проверки сохраните изменения с помощью комбинации клавиш Ctrl + O. Затем закройте файл, используя Ctrl + X.
- Чтобы изменения вступили в силу, нужно перезагрузить веб-сервер Nginx. Для этого выполните команду:
Готово, вы установили SSL-сертификат на Nginx.
Как проверить работу SSL-сертификата
Важно, чтобы все настройки SSL были корректны — только так обмен данными будет безопасным. Проверить работу сертификата можно с помощью онлайн-сервисов. В качестве примера рассмотрим домен sweb.ru и сервис проверки SSLShopper.
Чтобы убедиться в том, что SSL-сертификат работает корректно:
- Перейдите на сайт sslshopper.com.
- Введите доменное имя и кликните Check SSL:
- Убедитесь в том, что все пункты списка отмечены зеленой галочкой:
- Также проверьте валидность всех компонентов SSL-сертификата:
Если на одном из этапов проверки возникает ошибка, проверьте:
- активен ли сам сертификат — возможно, он требует продления,
- корректно ли прошла установка.
Если вы не наблюдаете видимых проблем или возникли сложности при настройке сертификата, обратитесь в службу поддержки.