Установка SSL-сертификата
SSL-сертификат шифрует соединение между браузером клиента и веб-сервером. Эта статья — установка купленного сертификата на сайт тремя способами: в панели ISPmanager, из консоли с Apache 2, из консоли с nginx. Разбираем подтверждение прав на домен и работу с четырьмя файлами, которые приходят после подтверждения.
Какие файлы приходят с сертификатом
При заказе SSL-сертификата вы выбираете авторизационный email на своём домене: admin, administrator, hostmaster, postmaster или webmaster. На выбранный email приходит письмо со ссылкой, по которой вы подтверждаете административные права домена; после подтверждения на контактный email аккаунта приходит несколько писем с файлами. Это:
- приватный ключ — сохраните его как обычный текстовый файл с именем
ваш_домен.key; - файл сертификата для домена
ваш_домен.crt; - файл цепочки сертификатов
PositiveSSLCA2.crt; - файл цепочки сертификатов
AddTrustExternalCARoot.crt.
Письмо с приватным ключом не пришло — сначала проверьте каталог «Спам» в почтовом ящике. Если письма и там нет, напишите письмо с контактного email аккаунта на info@majordomo.ru.
Как установить SSL-сертификат в ISPmanager
В панель файлы не загружаются: содержимое вставляете в формы. Всего пять шагов: разрешить SSL пользователю, включить SSL на WWW-домене, создать сертификат из своих файлов, привязать его к домену и проверить сайт по https.
Шаг 1. Разрешите SSL пользователю
Войдите в ISPmanager под учётной записью root. Если вы заказали VPS на тарифе с администрированием нашими специалистами, вход под root пропустите.
В меню «Учетные записи» → «Пользователи» выберите пользователя-владельца сайта, к которому нужно привязать SSL-сертификат, и нажмите кнопку «Изменить».

В открывшемся окне установите галочку «Может использовать SSL», если она ещё не стоит, и сохраните изменения кнопкой Ok.

Дальнейшие шаги выполняйте от имени пользователя-владельца сайта: снова выберите его и нажмите кнопку «Войти» в правом верхнем углу. ISPmanager автоматически понизит ваши привилегии до уровня этого пользователя.

Шаг 2. Включите SSL в настройках WWW-домена
Перейдите в раздел «WWW» → «WWW-домены». В списке отображаются все домены, добавленные в конфигурационные файлы веб-сервера; в колонке «Параметры» иконками показано наличие или отсутствие модулей веб-сервера, которые участвуют в обработке запросов к сайту. Выберите домен и нажмите кнопку «Изменить» сверху.

В открывшейся вкладке установите галочки «Защищённое соединение (SSL)» и «Перенаправлять HTTP-запросы в HTTPS», сохраните изменения кнопкой Ok.

Желательно, чтобы этот домен был единственным доменом с SSL на этом IP-адресе.
Шаг 3. Создайте сертификат из своих файлов
Перейдите в раздел «WWW» → «SSL сертификаты». Здесь показаны все сертификаты, имеющиеся на сервере; свой добавьте кнопкой «Создать» сверху.

Для вашего домена в списке уже есть самоподписанный сертификат: ISPmanager сгенерировал его автоматически в момент, когда на прошлом шаге вы поставили галочку SSL в настройках WWW-домена. Использовать его не нужно.
На первом шаге мастера выберите тип сертификата «существующий».

На втором шаге введите имя сертификата, сам сертификат, приватный ключ и подтверждающую цепочку. Откройте в блокноте все полученные файлы и скопируйте их содержимое в форму:
- в поле «SSL-сертификат» — содержимое
ваш_домен.crt; - в поле «Ключ SSL-сертификата» — содержимое
ваш_домен.key; - в поле «Цепочка SSL-сертификатов» — сначала содержимое
PositiveSSLCA2.crt, затем содержимоеAddTrustExternalCARoot.crt, именно в этом порядке.
Нажмите кнопку «Завершить».

Шаг 4. Привяжите сертификат к домену
Вернитесь во вкладку «WWW» → «WWW-домены» и нажмите кнопку «Изменить» сверху.

В поле «SSL-сертификат» выберите сертификат, добавленный на предыдущем шаге, и подтвердите изменения кнопкой Ok.

Шаг 5. Проверьте сайт по https
Откройте сайт в браузере по адресу вида https://ваш_домен.ru/. Аббревиатура https означает работу по шифрованному протоколу HTTP. Если всё настроено правильно, браузер отобразит сайт без предупреждений и сообщений о потенциальных угрозах, а в адресной строке будет обозначено, что передаваемые данные шифруются и сертификат подтверждён.

Когда схема может нарушиться
Схема может нарушиться при изменениях в ПО веб-сервера: при его переконфигурировании, смене IP-адреса домена, установке nginx перед Apache, например. Тогда, возможно, придётся вручную внести коррективы в конфигурационные файлы веб-сервера. С вопросами по добавлению сертификата напишите на support@majordomo.ru с контактного e-mail вашего сервера.
Установка сертификата из консоли: Apache 2
На сервере установлен и используется проксирующий веб-сервер nginx — сертификаты организуйте с его помощью, инструкция по nginx ниже отдельным разделом. Для Apache 2 выполните шесть шагов в консоли.
1. Поместите все четыре файла (приватный ключ ваш_домен.key и сертификаты ваш_домен.crt, PositiveSSLCA2.crt, AddTrustExternalCARoot.crt) в директорию /var/www/httpd-cert/.
2. Установите владельца и группу всех файлов в root:
chown root:root /var/www/httpd-cert/ваш_домен.key /var/www/httpd-cert/ваш_домен.crt /var/www/httpd-cert/PositiveSSLCA2.crt /var/www/httpd-cert/AddTrustExternalCARoot.crt
3. Установите права на файл ключа «только для владельца, только для чтения»:
chmod 400 /var/www/httpd-cert/ваш_домен.key
4. Создайте файл цепочки сертификатов и проверьте подлинность цепочки:
cat /var/www/httpd-cert/PositiveSSLCA2.crt /var/www/httpd-cert/AddTrustExternalCARoot.crt > /var/www/httpd-cert/ваш_домен.crt-bundle openssl verify /var/www/httpd-cert/ваш_домен.crt-bundle
Вывод при успехе:
/var/www/httpd-cert/ваш_домен.bundle: OK
Посмотреть информацию об сертификате можно, например, так:
openssl x509 -text -in ваш_домен.crt
5. В конфигурационном файле Apache 2 (наиболее вероятно — /etc/httpd/conf/httpd.conf) создайте новый VirtualHost на 443 порту. Ниже — только директивы, отвечающие за работу с сертификатом, остальные скопируйте по аналогии из имеющегося VirtualHost на 80-м порту:
SSLEngine on SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 SSLCertificateFile /var/www/httpd-cert/ваш_домен.crt SSLCertificateKeyFile /var/www/httpd-cert/ваш_домен.key SSLCACertificateFile /var/www/httpd-cert/ваш_домен.crt-bundle ServerName ваш_домен ...
Это должен быть первый, и желательно единственный, VirtualHost на этом IP-адресе на 443 порту.
6. Проверьте корректность синтаксиса конфигурационного файла:
/etc/init.d/httpd configtest
Если вывод — Syntax OK, перезапустите Apache и проверьте работу сайта с https://. Если всё сделано правильно, в адресной строке будет обозначено, что передаваемые данные шифруются и сертификат подтверждён.
Установка сертификата из консоли: nginx
Порядок тот же, отличие: цепочку сертификатов дописывают в файл ваш_домен.crt, а в конфигурацию вносят блок server с ssl-директивами nginx.
1. Поместите все четыре файла (приватный ключ ваш_домен.key и сертификаты ваш_домен.crt, PositiveSSLCA2.crt, AddTrustExternalCARoot.crt) в директорию /var/www/httpd-cert/.
2. Установите владельца и группу всех файлов в root:
chown root:root /var/www/httpd-cert/ваш_домен.key /var/www/httpd-cert/ваш_домен.crt /var/www/httpd-cert/PositiveSSLCA2.crt /var/www/httpd-cert/AddTrustExternalCARoot.crt
3. Установите права на файл ключа «только для владельца, только для чтения»:
chmod 400 /var/www/httpd-cert/ваш_домен.key
4. Допишите файлы цепочки в файл сертификата и проверьте подлинность цепочки:
cat /var/www/httpd-cert/AddTrustExternalCARoot.crt >> /var/www/httpd-cert/ваш_домен.crt cat /var/www/httpd-cert/PositiveSSLCA2.crt >> /var/www/httpd-cert/ваш_домен.crt openssl verify /var/www/httpd-cert/ваш_домен.crt
Вывод при успехе:
/var/www/httpd-cert/ваш_домен.bundle: OK
Посмотреть информацию об сертификате можно, например, так:
openssl x509 -text -in ваш_домен.crt
5. Внесите в конфигурационный файл nginx, в модуль server, следующие директивы:
server {
listen 443;
ssl on;
ssl_certificate /var/www/httpd-cert/ваш_домен.crt;
ssl_certificate_key /var/www/httpd-cert/ваш_домен.key;
server_name your.domain.com;
...
}
Это должен быть первый, и желательно единственный, VirtualHost на этом IP-адресе на 443 порту.
6. Перезапустите nginx:
/etc/init.d/nginx restart
Затем проверьте работу сайта с https://. Если всё сделано правильно, в адресной строке будет обозначено, что передаваемые данные шифруются и сертификат подтверждён.