Насколько вероятно, что вы порекомендуете FirstVDS своим друзьям?
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
×
ВЫ ПОСТАВИЛИ НАМ 8 ИЗ 10. Подарок за любой комментарий!
×
«Хостер года»Национальная премия ЦОДы.рф
FirstVDS обладатель национальной премии ЦОДы.рф 2020/2021 в номинации «Хостер года»

FIRST VDS

Самый популярный VDS-хостинг в России

Установка SSL-сертификата на домен

После того, как вы заказали сертификат и получили файлы, необходимо сделать кое-что еще — а точнее, установить сертификат на сервер для домена. В этой статье мы рассмотрим вариант установки как через панель ISPmanager, так и вручную — если панели нет. 

Если вам необходимо установить сертификат на Windows server, воспользуйтесь этой инструкцией.

Для установки сертификата потребуется:

  • Файл сертификата и цепочка сертификата — должны прийти к вам на почту после выпуска сертификата.
  • Ключ сертификата, который генерируется при формировании csr запроса.
  • Root доступ к серверу.

Установка SSL-сертификата на домен средствами панели ISPmanager 6

1. Зайдите в ISPmanager 6 под пользователем, которому принадлежит домен. Это можно сделать так: войдите в панель под пользователем root, найдите раздел Пользователи — выберите пользователя — нажмите Войти под пользователем (справа вверху кнопка с изображением стрелочки и двери).

Примечание: не забудьте для пользователя включить возможность добавления SSL (ISPmanager — Пользователи — двойной клик по пользователю — поставьте галочку в пункте Может использовать SSL).

2. В разделе SSL-сертификаты — справа вверху кнопка Добавить сертификат.

Укажите Тип сертификата — Существующий. И заполните все поля:

Имя сертификата — Начиная с версии панели 6.19, данного пункта нет, имя будет формироваться из информации о сертификате + “_customX”

Примечание: Если у вас панель ниже версии 6.19, то нужно указать имя сертификата. Оно может содержать буквы латинского алфавита, цифры, точки, а также знаки _ и -

SSL-Сертификат — укажите содержимое файла SSL-сертификата, обычно имеет расширение .crt

Ключ SSL-сертификата — укажите содержимое файла приватного ключа, обычно имеет расширение .key

Цепочка SSL-сертификатов — Certificate bundle: цепочка сертификатов, которыми подписан данный сертификат, обычно файл имеет расширение .ca или .ctrca

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

3. После того, как сертификат успешно добавлен, перейдите в раздел Сайты и включите его. Двойной клик по нужному сайту — установить галочку Защищённое соединение (SSL) — выбрать из списка нужный сертификат:

Примечание: При любых изменениях настроек сайта будут пересозданы конфигурационные файлы веб-сервера выбранного сайта, поэтому, если вы вручную вносили изменения в конфигурационные файлы, они могут не сохраниться. В этом случае нужно будет вручную поправить конфигурационный файл, указать файлы сертификата. Файлы сертификата, добавленного через панель, находятся в директории /var/www/httpd-cert/ИМЯ_ПОЛЬЗОВАТЕЛЯ/ИМЯ_СЕРТИФИКАТА 

4. После установки сертификата можете проверить его по ссылкам:

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

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

Самый простой и быстрый способ проверки сертификата. Как понять, что сертификат установлен корректно? Всё интуитивно понятно, если при проверке будут зелёные галочки, значит всё правильно.

Ручная установка SSL-сертификата

Если панели ISPmanager 6 на сервере нет, то для установки сертификата вам нужно подключиться к серверу по SSH.

Проверка порта

По умолчанию ssl использует 443 порт, поэтому будем проверять именно его. Какой веб-сервис отвечает на 443 порту, можно проверить командой:

  • Для Ubuntu / Debian / Centos

# netstat -napt | grep 443

либо

# ss -tlpn | grep 443

Вывод будет примерно следующим:

tcp        0      0 188.120.233.16:443      0.0.0.0:*               LISTEN      731/apache2

  • Для FreeBSD

# sockstat | grep 443

Вывод будет примерно следующим:

root      httpd      83299 19 tcp4   188.120.225.20:443    *:*  

Установка в конфигурационный файл веб-сервера

Apache2 и httpd — это одно и тоже, в зависимости от ОС будут использоваться разные имена службы. Вместо apache или httpd может быть nginx, ниже мы рассмотрим вариант установки сертификата на него.

Веб-сервер Apache

Если ssl-запросы обрабатывает Apache, то сертификат устанавливается в файле конфигурации Apache. 

Ubuntu / Debian - /etc/apache2/apache2.conf

Centos - /etc/httpd/conf/httpd.conf

На FreeBSD — это /usr/local/etc/apache22/httpd.conf. Найдите VirtualHost вашего домена.

Иногда вы можете найти блоки <VirtualHost> в отдельных файлах, в директории веб-сервера.

Создайте блок <VirtualHost> для подключения SSL-соединения. Пример:

<VirtualHost 10.0.0.1:443>

  DocumentRoot /var/www/user/data/www/domain.com

  ServerName domain.com

  SSLEngine on

  SSLCertificateFile /path/to/domain.crt

  SSLCertificateKeyFile /path/to/domain.key

  SSLCACertificateFile /path/to/ca.crt

</VirtualHost>

Где:

  • domain.com — имя вашего домена.
  • 10.0.0.1 — ip адрес, на котором находится домен.
  • /var/www/user/data/www/domain.com — путь до домашней директории вашего домена.
  • /path/to/domain.crt — файл, в котором находится сертификат.
  • /path/to/domain.key — файл, в котором находится ключ сертификата.
  • /path/to/ca.crt — файл корневого сертификата.

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

# apachectl -t

Если вывод будет Syntax OK, значит, ошибок нет и можно перезапустить веб-сервер, это можно сделать любой из приведенных ниже команд:

# apachectl restart

# systemctl restart apache2

# systemctl restart httpd

Либо перечитать конфигурационный файл без перезапуска веб-сервера:

# apachectl -k graceful

Веб-сервер Nginx

Если ssl-запросы обрабатывает Nginx, то сертификат устанавливается в файле конфигурации Nginx.

Откройте конфигурационный файл Nginx - /etc/nginx/nginx.conf

Создайте серверный модуль для SSL-соединения. Пример:

server {

        listen 10.0.0.1:443;

        server_name domain.com;

        ssl                  on;

        ssl_certificate     /path/to/domain.crt;

        ssl_certificate_key  /path/to/domain.key ;

  }

Где:

  • domain.com — имя вашего домена.
  • 10.0.0.1 — ip адрес, на котором находится домен.
  • /path/to/domain.crt — файл, в котором находится сертификат.
  • /path/to/domain.key — файл, в котором находится ключ сертификата.

Цепочка сертификатов дописывается в файл с сертификатом.

Посмотрим, как это работает на примере сертификата Comodo Positive SSL. Центр сертификации присылает файлы с расширениями .crt и .ca-bundle. Цепочкой сертификата будет содержимое файла с расширением .ca-bundle. В итоге файл domain.crt должен содержать в себе оба файла, .crt и .ca-bundle.

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

# nginx -t

Если вывод будет:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Значит ошибок нет и можно перезапустить веб-сервер, это можно сделать командами:

# systemctl restart nginx

Либо перечитать конфигурационный файл без перезапуска веб-сервера:

# nginx -s reload

Несколько SSL-сертификатов на одном ip-адресе

Если используется несколько сертификатов на одном ip-адресе, то браузер получит сертификат сервера по умолчанию, независимо от запрашиваемого имени сервера. Это связано с поведением протокола SSL. SSL-соединение устанавливается до того, как браузер посылает HTTP-запрос, и веб-сервер не знает имени запрашиваемого сервера. Следовательно, он лишь может предложить сертификат сервера по умолчанию.

Решение для работы нескольких HTTPS-серверов на одном IP-адресе — расширение Server Name Indication протокола TLS (SNI, RFC 6066), которое позволяет браузеру передать запрашиваемое имя сервера во время SSL handshake, а значит, сервер будет знать, какой сертификат ему следует использовать для соединения. Почти все современные браузеры поддерживают SNI, однако, чтобы использовать SNI, соответствующая поддержка должна присутствовать также в библиотеке OpenSSL. OpenSSL поддерживает SNI, начиная с версии 0.9.8f.

Полезные команды Openssl

  • Создание ключа для SSL-сертификата:

openssl req -batch -noout -new -newkey rsa:2048 -nodes -keyout cert.key

  • Генерация CSR-запроса:

openssl req -new -key cert.key -out cert.csr

  • Убрать пароль с ключа:

openssl rsa -in cert.key -out cert.key

  • Посмотреть данные CSR:

openssl req -noout -text -in cert.csr

  • Данные сертификата (проверить кем выдан, например):

openssl x509 -noout -text -in cert.crt

  • Проверить, что ключ соответствует сертификату:

openssl x509 -noout -modulus -in cert.crt | openssl md5

openssl rsa -noout -modulus -in cert.key | openssl md5

Два последних значения должны совпадать, в нашем случае это md5.

  • Узнать длину запроса:

echo '(' `openssl req -noout -modulus -in cert.csr | cut -d'=' -f2 | wc -c` '-1)*4' | bc

  • Проверить выдачу HTTPS:

openssl s_client -host  ulanovka.ru -port 443